我正在尝试创建一个在一个片段中列出城市的应用,点击后,在另一个片段中打印一个简短描述。
以下是具有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)
任何建议或解决方案将不胜感激。 谢谢!
答案 0 :(得分:1)
堆栈跟踪中的这一行指出了答案:
override func shake() {
print("Shake")
}
错误发生在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)
的第47行,您未在问题中提及。您要调用的对象MainActivity
为null。在那里寻找问题。你可能忘了正确地初始化它。
答案 1 :(得分:0)
从调用updateDescription(String text)方法的位置开始,在创建视图后调用它。如果在创建视图之前调用它,那么您将获得NullPointerException。