Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从父活动获取片段编辑文本值_Android_Android Fragments - Fatal编程技术网

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;
}