2017-02-01 52 views
-3

我試圖創建一個應用程序,在一個片段中列出城市,並單擊時,在另一個片段中打印一個簡短的描述。嘗試從主要更新textView時從片段函數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) 

任何建議或解決方案,將不勝感激。 謝謝!

+0

您需要向我們展示'City_list'和'MainActivity'。請[編輯]問題 –

回答

1

答案是指向這一行的堆棧跟蹤:

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()的對象爲空。在那裏尋找問題。您可能忘記了正確初始化它。

0

從您調用updateDescription(String text)方法的位置開始,創建視圖後調用它。如果你在創建視圖之前調用它,那麼你將得到NullPointerException。

相關問題