2017-07-14 19 views
-4

を使用して配列のリストを渡ししようとしているので、私は私の活動からのフラグメントに配列リストを渡すしようとしています、これは私がやったことである間:ヌルオブジェクト参照のHelloインタフェース

FirstActivityを:

AdminInterface instanceForInterface; 

OnCreate 
// 
System.out.println(results.size) ; //works fine 
instanceForInterface.onDataRecieved(results); // here I am getting the exception 
// 

public interface AdminInterface { 
    void onDataRecieved(ArrayList <Result> response); 
} 



public void setInterface(UserFragment anInterface) { 
    this.instanceForInterface = anInterface; 
} 

フラグメント

OnActivityCreated 
((FirstActivity) getActivity()).setInterface(this); 

@Override 
public void onDataRecieved(ArrayList<Result> response) { 
    processData(response); 
} 

例外

Attempt to invoke interface method 'void **************.onDataRecieved(java.util.ArrayList)' on a null object reference 
01私が何を考えて

私はOnActivityCreated()

ソリューションで

((FirstActivity) getActivity()).setInterface(this);の初期化前にOnCreate()

instanceForInterface.onDataRecieved(results);この行を呼び出していますしてください?

はあなたに

+3

可能な複製を[NullPointerExceptionがある、と私はそれをどのように修正すればよいか?](https://stackoverflow.com/questions/218384/:さらなる活動とフラグメントのライフサイクルについて読ん

私はそれを覚えておいてください) – SripadRaj

+0

'OnActivityCreated'の代わりに' onAttach'を入れました –

+0

'ArrayList'を' Bundle'として渡す方が良いhttps://stackoverflow.com/質問/ 17436298/how-to-pass-from-activity-from-fragment-and-back-it-back –

答えて

1

ありがとう問題はあなたのフラグメントのonActivityCreated()方法は、あなたの活動のonCreate()メソッドの後に呼び出されるということです。

あなたが望む動作を達成するためにできる最小の変更は、アクティビティでonResumeFragments()メソッドを使用することです。つまり、あなたのonCreateからラインinstanceForInterface.onDataRecieved(results);を削除し、このコードを追加:

@Override 
protected void onResumeFragments() { 
    super.onResumeFragments(); 
    instanceForInterface.onDataRecieved(results); 
} 

onResumeFragments()は、両方のあなたの活動のonCreate()とあなたのフラグメントのonActivityCreated()方法の後に、システムによって呼び出されます。

言われているように、チャンスはあなたが完全に別のアプローチでより良くなることが非常に良いです。たとえば、アクティビティにresultsのゲッターが公開され、そのフラグメントが(アクティビティにフラグメントへの参照を格納させるのではなく)処理する結果を取得するようにすることができます。 https://developer.android.com/guide/components/activities/activity-lifecycle.html https://developer.android.com/guide/components/fragments.html

関連する問題