尝试从main更新textView时,fragment函数出现NullPointerException



我正试图创建一个应用程序,在一个片段中列出城市,单击后,在另一个片段打印一个简短的描述。

这是带有updateDescription函数的描述类:

public class Description extends Fragment {
public Description() {
// Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
setRetainInstance(true);
// Inflate the layout for this fragment
return inflater.inflate(R.layout.description_fragment   , container, false);
}
public void updateDescription(String text){
TextView textView = (TextView) getView().findViewById(R.id.text_to_be_updated);
textView.setText(text);
}
}

这是该类的.xml文件:

<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"
android:id="@+id/des_layout"
tools:context="com.example.connormclean.lab3.Description">
<TextView
android:layout_width="wrap_content"
android:layout_height="146dp"
android:id="@+id/text_to_be_updated"
android:textSize="25sp"
android:layout_gravity="center"
android:text="@string/frag_test"
android:textAlignment="center"
android:textColor="@android:color/black" />

这导致了这个错误:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.connormclean.lab3, PID: 3903
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.connormclean.lab3.Description.updateDescription(java.lang.String)' on a null object reference
at com.example.connormclean.lab3.MainActivity.sendText(MainActivity.java:47)
at com.example.connormclean.lab3.City_list.getDescription(City_list.java:91)
at com.example.connormclean.lab3.City_list$1.onItemClick(City_list.java:46)
at android.widget.AdapterView.performItemClick(AdapterView.java:310)
at android.widget.AbsListView.performItemClick(AbsListView.java:1145)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3042)
at android.widget.AbsListView$3.run(AbsListView.java:3879)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

任何建议或解决方案都将不胜感激。谢谢

堆栈跟踪中的这一行指出了答案:

java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.connormclean.lab3.Description.updateDescription(java.lang.String)' on a null object reference
at com.example.connormclean.lab3.MainActivity.sendText(MainActivity.java:47)

这个错误在MainActivity的第47行,你的问题中没有包括这个错误。您正在调用updateDescription()的对象为null。找那里的问题。您可能忘记正确初始化它。

从调用updateDescription(字符串文本)方法的位置,在创建视图后调用它。如果在创建视图之前调用它,则会得到NullPointerException。

最新更新