2016-04-28 11 views
0

子のフラグメントから親のTextViewを変更するだけで済みます。このアクティビティは実際にはフラグメントの横に表示されているので、フラグメントから変更できるはずだと思っていますが、今まで試みたすべてのものでNPEを満たしています。私は親からフラグメントを更新することについていくつかの記事を見ていますが、私はその逆をする必要があり、それらの機能はこれまで働いていません。フラグメントの親のTextViewを更新するアクティビティ

このメソッドを私のMainActivity(親)の中に入れて、フラグメントからTextViewを更新できるようにしました。私のフラグメントで

public void updateGoldTextView(int goldAmount) { 
    goldTV.setText(String.valueOf(goldAmount)); 
} 

私はそうメソッドを呼び出しています:

MainActivity mainActivity = new MainActivity(); 
mainActivity.updateGoldTextView(50); 

私は私がこれを適切に参照できるようにするために、私のフラグメントに行うためには何が必要ですか?

+0

NPEを投げながらコードからこのメソッドを呼び出そうとしていますか? – Antrromet

+1

ああ、申し訳ありません、私はそれを投稿するつもりでした。 2秒後に更新されます! –

+0

しかし、テキストを設定しようとすると、NPEがMainActivityから来ています。私はもはやそのTextViewへのアクセスを持っているかのように(まだ表示されていても) –

答えて

3

あなたはメソッドを間違って呼び出しています!あなたの断片で次のことを試してください。

((MainActivity) getActivity()).updateGoldTextView(50); 

この仕組みを理解するには、Androidの中のすべてのActivityは、ユーザーが見ている画面です。 MainActivityがフラグメントをホストします。フラグメントから親アクティビティにアクセスするには、getActivity()メソッドを使用することになっています。

+0

あなたは正しいです。あなたは(MainActivity)にキャストされているアクティビティを取得していますか? –

+0

更新された回答を確認してください。基本的に親アクティビティを取得するには、あなたは 'getActivity()'を使用し、あなたが現在行っている 'MainActivity'の新しいインスタンスを作成しないことになっています! – Antrromet

+0

実際、上記のように、「アクティビティ」のインスタンスを作成しないでください。 – Antrromet

0

ただし、フラグメントからアクティビティにデータを渡すのがベストプラクティスであるため、interface.soを使用していつでもNPEを取得する必要はありません。

関連する問題