2017-04-05 29 views
0

インターフェイスを作成して、フラグメントからアクティビティにデータを送信しようとしています。フラグメントインターフェイスメソッドを呼び出すときにNullPointerExceptionが発生する

だから最初に私は、ONATTACH方法で

@Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     callback = (OnMediaSelected) activity; 
    } 

をコールバック変数を初期化し、別の方法では、私は私のインターフェイスのコールバックと呼ばれる、

その後、

public interface OnMediaSelected{ 
     public void onItemPicked(String url, String type); 

    } 

を私の断片クラスのインタフェースを作成しました

public void Action(String url,String type){ 
    Log.i("data check",url); 
    try { 
     callback.onItemPicked(url,type); 
    }catch (Exception e){ 
     Log.i("Error",e.toString()); 

    } 
} 

これらのデータ(url、type)はnullではありません。

しかし、私はこのアプリを実行すると、私はたぶん、あなたは別のONATTACHメソッドを使用しているこのエラーに

Attempt to invoke interface method 'void com.buckydroid.app.MoreOptions$OnMediaSelected.onItemPicked(java.lang.String, java.lang.String)' on a null object reference 
+0

があなたの活動がインタフェースを実装している中でOnMediaSelectedインタフェースを実装する必要がありますか? – ditn

+0

可能であれば、アクティビティとフラグメントコードを入力してください。 – androidnoobdev

答えて

0

を取得しています。これを試してください(パラメータを見てください):

@Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     if (context instanceof OnMediaSelected) { 
      callback = (OnMediaSelected) context; 
     } 
    } 

あなたはonDettachも変更する必要があります。

0
public void Action(String url,String type){ 
    Log.i("data check",url); 
    try { 
     ((OnMediaSelected)getActivity()).onItemPicked(url,type); 
    }catch (Exception e){ 
     Log.i("Error",e.toString()); 
    } 
} 

、あなたがあなたの活動

関連する問題