Android 从父活动获取片段编辑文本值
我在Android 从父活动获取片段编辑文本值,android,android-fragments,Android,Android Fragments,我在活动类上有一个对话框片段。这个片段有一个EditText字段,我要做的就是检查该字段的输入是否少于3位,然后显示一条toast消息。应用程序不断崩溃,我甚至看不出它在日志/堆栈跟踪中抛出了什么异常 活动类别: public class ParentActivity extends AppCompatActivity{ public boolean getTextCodeLength(){ EditText editTextfield = (EditText)findV
活动
类上有一个对话框片段
。这个片段有一个EditText
字段,我要做的就是检查该字段的输入是否少于3位,然后显示一条toast消息。应用程序不断崩溃,我甚至看不出它在日志/堆栈跟踪中抛出了什么异常
活动类别:
public class ParentActivity extends AppCompatActivity{
public boolean getTextCodeLength(){
EditText editTextfield = (EditText)findViewById(R.id.textFieldName);
if(editTextfield.length() < 4)
{
return false;
}
return true;
}
}
每当它碰到标有数字15
的行时,它就会不断崩溃,我甚至不知道是什么导致了错误,因为我无法在LogCat中看到所提到的任何异常。如果能帮上点忙,我将不胜感激
更多背景:
烤面包是为了测试。理想情况下,如果用户的输入少于4位,我希望用户留在片段上。将此代码移动到onCreate活动方法:
mEditTextfield = (EditText)findViewById(R.id.textFieldName);
将字段添加到活动类:
private EditText mEditTextfield;
修改您的方法:
public boolean getTextCodeLength(){
if(mEditTextfield.length() < LIMIT)
{
return false;
}
return true;
}
public boolean getTextCodeLength(){
if(mEditTextfield.length()
还要检查片段是否附加到onDialogOkClick()中的活动 为什么不在片段内部处理
getTextCodeLength()
?在活动中定义它是错误的,因为它使用来自片段的字段,并且结果仅在片段中使用。我希望在片段中保留字段的引用(在层次结构中查找视图的成本很高,并且不应该每次按下按钮时都这样做)。因此,在片段中声明一个EditText
:
private EditText editText;
覆盖onCreateView
以获取字段的引用:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View contentView = inflater.inflate(R.layout.your_fragment_layout, container, false);
editText = contentView.findViewById(R.id.textFieldName);
return contentView;
}
然后从活动中删除getTextCodeLength
(也可以重命名此方法,因为当前名称具有误导性),并将其移动到片段中:
public boolean getTextCodeLength(){
if(editText.length() < 4)
{
return false;
}
return true;
}
public boolean getTextCodeLength(){
if(editText.length()<4)
{
返回false;
}
返回true;
}
现在一切都应该顺利进行,不会发生任何碰撞 我实现了您的更改,并包含了一个检查:`if(((ConnectionActivity)getActivity())==null)`并且它在这条线上再次崩溃。我还查看了一下:但是没有luckHow显示对话框?它可以是CEE(类强制转换异常)。因此,您应该检查getActivity instanceOf ConnectingActivity
private ConnectingActivity myActivity
然后在我的onCreateDialog
hook中实例化它:myActivity=(ConnectingActivity)getActivity()代码>如何查看我的异常?LogCat没有给我看任何东西
public boolean getTextCodeLength(){
if(editText.length() < 4)
{
return false;
}
return true;
}