Java 无法设置EditText字段(Android)的setText()-NullPointerException
当我试图在EditText上设置Text()时,我总是会遇到这个错误,我看不出哪里出错了。我想了解这个错误背后的逻辑。我敢肯定这是件小事,但现在真的让我心烦 01-25 10:20:44.267 14325-14325/com.example.gregsquibbs.greg_squibbs_todoapp3 E/AndroidRuntime:致命异常:主 流程:com.example.gregsquibbs.greg_squibbs_todoapp3,PID:14325 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.gregsquibbs.greg_squibbs_todoapp3/com.example.gregsquibbs.greg_squibbs_todoapp3.EditTodoActivity}: java.lang.NullPointerException:尝试调用虚拟方法“void” android.widget.EditText.setText(java.lang.CharSequence)“”在空 对象引用 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 位于android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 位于android.os.Handler.dispatchMessage(Handler.java:105) 位于android.os.Looper.loop(Looper.java:164) 位于android.app.ActivityThread.main(ActivityThread.java:6541) 位于java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 原因:java.lang.NullPointerException:尝试调用虚拟机 方法'void android.widget.EditText.setText(java.lang.CharSequence)' 关于空对象引用 在 com.example.gregsquibbs.greg_squibbs_todoapp3.EditTodo.editodofragment.setMessage(editodofragment.java:56) 在 com.example.gregsquibbs.greg_squibbs_todoapp3.EditTodo.edittoactivity.onCreate(edittoactivity.java:41) 位于android.app.Activity.performCreate(Activity.java:6975) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 位于android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 位于android.os.Handler.dispatchMessage(Handler.java:105) 位于android.os.Looper.loop(Looper.java:164) 位于android.app.ActivityThread.main(ActivityThread.java:6541) 位于java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 这就是我创建etMessage并使用setText()的地方 } 这是XML文件Java 无法设置EditText字段(Android)的setText()-NullPointerException,java,android,oop,Java,Android,Oop,当我试图在EditText上设置Text()时,我总是会遇到这个错误,我看不出哪里出错了。我想了解这个错误背后的逻辑。我敢肯定这是件小事,但现在真的让我心烦 01-25 10:20:44.267 14325-14325/com.example.gregsquibbs.greg_squibbs_todoapp3 E/AndroidRuntime:致命异常:主 流程:com.example.gregsquibbs.greg_squibbs_todoapp3,PID:14325 java.lang.R
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.gregsquibbs.greg_squibbs_todoapp3.EditTodo.EditTodoActivity">
<EditText
android:id="@+id/etMessage"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:background="@drawable/rect"
android:ems="10"
android:gravity="top"
android:inputType="textShortMessage" />
<Button
android:id="@+id/bSave"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Save"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:onClick="saveButtonClicked"
android:layout_gravity="center_horizontal|bottom"
/>
}
编辑:在片段的这一行上
etMessage = (EditText) view.findViewById(R.id.messageField);
当我将鼠标悬停在演员表(编辑文本)上时,它会显示
将'view.findViewById(R.id.messageField)'强制转换为'EditText'的冗余更少。。。(⌘F1)
此检查报告不必要的强制转换表达式
我不知道这是否与此有关。首先,您必须定义这个编辑文本属于witch视图 然后,在你膨胀你的观点之后,你应该这样做
View view = inflater.inflate(R.layout.edit_todo_fragment, container, false);
etMessage = view.findViewById(R.id.etMessage);
etMessage.setText("your message...")
如果在前面调用set text,则会看到此错误
或
此视图(etMessage)不在
etMessage = (EditText) view.findViewById(R.id.messageField);
View view = inflater.inflate(R.layout.edit_todo_fragment, container, false);
etMessage = view.findViewById(R.id.etMessage);
etMessage.setText("your message...")
message = getIntent().getStringExtra(IntentConstants.INTENT_MESSAGE_DATA);
if (fragment == null){
editTodoFragment = new EditTodoFragment();
//
Bundle bundle = new Bundle();
bundle.putInt(key, message);
fragment.setArguments(bundle);
fm.beginTransaction()
.add(R.id.contentFrameContainer, editTodoFragment)
.commit();
editTodoPresenter = new EditTodoPresenter(editTodoFragment);
}
Bundle bundle = this.getArguments();
if (bundle != null) {
message = bundle.getString(key, defaultValue);
}
etMessage = (EditText) view.findViewById(R.id.etMessage);
etMessage.setText(message);