2017-03-19 10 views
0

"fragment"タグを使用してレイアウトxmlにアクティビティを埋め込んでいます。 フラグメントのクラスは、それを設定するための簡単な方法は、以下のようなオンデマンドのTextViewですしています動作開始/起動時にフラグメントを設定する

MyFragment{ 
void setNameText(String user){ 
    mNameText.setText(user); 
} 
} 

私は以下のようにOnCreateの活動の内部フラグメント参照を取得します:

MyActvity::onCreate(){ 
     myFrag = (MyFrag)getSupportFragmentManager().findFragmentById(R.id.myfrag_id); 
} 

今私は時に活動myFragの名前を設定する必要がありますが開始されます。私はActivity :: onCreateとActvity :: onResumeから "myFrag.setNameText(x)"を呼び出すことを試みました。両方の時間は、 "mNameText"オブジェクトでnullポインタ例外insdie "setNameText()"メソッドを取得します。

Error: 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxxxxxActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference 

アクティビティの起動時に、子フラグメントのuiオブジェクトにアクセスするには、どのような場所が適していますか?

答えて

0

フラグメントタグの参照を取得する必要はありません。代わりに、フラグメントクラスを作成し、主なアクティビティを通して呼び出す必要があります。アクティビティのonCreateを呼び出すと

YourFragment myFragment = new YourFragment(); 
       getFragmentManager().beginTransaction().replace(R.id.YourFragmentTAG, myFragment).addToBackStack(null).commit(); 
0

、フラグメントが活動に添付されていない、あなたはフラグメントのonCreateViewメソッドである必要がありますあなたのTextViewをバインドするfindViewByIdを呼び出し、その後、あなたは

をのsetTextすることができます
関連する問題