我正在關注android's website中的Android培訓。我被困在某些片段中。問題是我無法在片段中獲得對textview的引用。getActivity()。findViewById(int id)即使在片段完成構建後也會返回null
TextView view = (TextView) getActivity().findViewById(R.id.article_s);
我在一個活動中有兩個片段。一個是簡單的簡單ListFragment
,另一個是簡單的簡單TextView
。這裏是片段和活動佈局xml文件。
ArticleFragment:
<!-- This is fragment_article.xml -->
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some Text"
android:textSize="18sp"
android:id="@+id/article_s"/>
MainActivity(我的容器的所有片段)
<!-- This is activity_main.xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:layout_height="match_parent"
android:name="com.example.bora.fragmentsmyway.HeadlinesFragment"
android:id="@+id/headlines_fragment"
android:layout_weight="1"
android:layout_width="0dp" />
<fragment
android:layout_height="match_parent"
android:name="com.example.bora.fragmentsmyway.ArticleFragment"
android:layout_weight="2"
android:id="@+id/article_fragment"
android:layout_width="0dp" />
</LinearLayout>
有一個在我的ArticleFragment
公共方法,它需要一個字符串來更新自身的TextView的內容:
public void updateView(String article) {
TextView view = (TextView) getActivity().findViewById(R.id.article_s);
try{
view.setText(article);
} catch (NullPointerException e) {
e.printStackTrace();
}
}
在創建所有視圖後,我打電話給updateView
從我的MainActivity方法。但是當我試圖找到文章TextView時,我得到了一個NullPointerException
。我已經嘗試清理,更改TextView的資源ID。
但是我找到了解決這個問題的辦法。我不知道爲什麼,但它似乎當我在fragment_article.xml
與LinearLayout
包裹TextView
工作:
<LinearLayout
xmlns:android="..."
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some Text"
android:textSize="18sp"
android:id="@+id/article_s" />
</LinearLayout>
但我想知道這一點:哪有,教程樣本中,上面的代碼工作,不能我寫作時的工作?我通過信件檢查了每個字母,但我的螞蟻之間沒有區別。是因爲版本?
我正在使用API 23,它是棉花糖。
只更改爲R.id.article到R.id.article_s –
**我不知道爲什麼,但它似乎工作時,我用fragment_article.xml中的LinearLayout包裝TextView。你能告訴我們的代碼? – Raghunandan
@Raghunandan我已添加。 – Bora