2016-11-28 4 views
0

メニュー用のNavigationDrawerを使用していて、メニューの各項目の断片があります。たとえば、homefragemnt.xmlとhomefragment.javaを持つホームメニューがあります。したがって、xmlファイルファイルにtextviewがあります私はMainActivity.java を使用して、そのtextviews値を変更するようだったし、次のコードを使用:TextView t1 = (TextView) findViewById(R.id.changetxt);t1.setText("ChangedText"); changetxtはhomefragment.xmlファイル 中のTextViewのIDですが、このコードは、この問題を引き起こしている何Attempt to invoke virtual method on a null object reference. を言ってランタイムエラーを与えますどのように私はそれを解決するのですか?MainActivity.javaのフラグメントレイアウトTextViewを編集するには?

+0

コード全体を投稿できますか? – fsnasser

+0

私は恐れています。あなたに何かを知りたいかどうか尋ねることができます。私にはコードがありません。 – surafel

+0

アクティビティからFragmentのビューにアクセスすべきではありません。通常、Fragmentインスタンスにそのビューを更新するように依頼する必要があります。 –

答えて

1

テキストビューの参照は、アクティビティではなくフラグメントビューから取得する必要があります。 フラグメントのonCreateViewで膨らませたビュー。

@Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View view=inflater.inflate(R.layout.myview,container,false); 

    TextView t1 = (TextView) view.findViewById(R.id.changetxt);t1.setText("ChangedText"); 
     return view; 
    } 

ここでの表示は、フラグメントが初期化されたビューです。

myFragment.setTextView( "ChangedText":

パブリッククラスMyFragmentが断片{

TextView t1; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.activity_main, container, false); 
    t1 = (TextView) view.findViewById(R.id.changetxt); 
    return view; 
} 

public void setTextViewText(String value){ 
    t1.setText(value); 
} 

}

活動を拡張します。

thisリンクは

+0

はい私もそれを試みたが、私はエミュレータでアプリケーションを実行すると動作しません – surafel

+0

ちょうどエミュレータ上で?あなたができるときはいつでもコードを投稿してください –

+0

はい私はできるときにemulator.i上のご協力ありがとうございました – surafel

0

フラグメントを助けます);

お手伝いします。

関連する問題