努力尽今夕,少年犹可夸。这篇文章主要讲述从父活动android获取片段编辑文本值相关的知识,希望能为你提供帮助。
我在DialogFragment
班上有一个Activity
。这个片段有一个EditText
字段,我想要做的就是检查输入字段是否少于3位,然后显示一个Toast消息。应用程序不断崩溃,我甚至无法看到它在LogCat / Stacktrace中引发了什么异常。
活动类:
public class ParentActivity extends AppCompatActivity{
public boolean getTextCodeLength(){
EditText editTextfield = (EditText)findViewById(R.id.textFieldName);
if(editTextfield.length() <
4)
{
return false;
}
return true;
}
}
片段类:
public class EnterTextFragment extends DialogFragment {
public void onDialogOkClick(DialogInterface dialog) {
try {
15. boolean result = ((ParentActivity) getActivity()).getTextCodeLength();
if (result == false) {
Toast.makeText(myContext, "Code needs to be longer than 4 digits", Toast.LENGTH_LONG).show();
}
}
catch(Exception ex)
{
Log.e("YOUR_APP_LOG_TAG", "I got an error", ex);
}//Perform some other functions
}
}
每当它击中标有数字
15
的行 - 它一直崩溃,我甚至没有得到导致错误的原因,因为我无法在提到的LogCat中看到任何异常。一些帮助将非常值得赞赏。更多上下文:Toast用于测试目的。理想情况下,如果用户的输入小于4位,我想让用户留在片段上。
答案为什么你不处理片段内的
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;
}
现在一切都应该顺利运行,没有任何崩溃。
另一答案将此代码移动到onCreate活动方法:
mEditTextfield = (EditText)findViewById(R.id.textFieldName);
在活动类中添加字段:
private EditText mEditTextfield;
修改你的方法:
public boolean getTextCodeLength(){
if(mEditTextfield.length() <
LIMIT)
{
return false;
}
return true;
}
【从父活动android获取片段编辑文本值】还要检查片段是否附加到onDialogOkClick()中的活动。
推荐阅读
- 使用循环片段依赖关系模块化单活动Android应用程序
- logcat错误android studio编程片段
- Android Stackoverflow错误(ViewGroup.jumpDrawablesToCurrentState)
- 在switch语句中将Android中的字符串从硬编码更改为字符串资源
- 键盘启动时,Android Fragment视图不会滚动
- Android片段文档含义
- 如何在android中的地图片段内中心线性布局()
- 在Google Apps脚本中格式化PDF附件(MailApp.sendEmail)
- 通过WhatsApp分享PDF