2017-04-05 61 views
0

我試圖通過創建接口將一些數據發送到我的活動從片段。試圖調用片段接口方法時發生NullPointerException

所以首先我創建了我的片段類的接口,

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

    } 

然後初始化在onAttach方法回調變量,

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

而在另一種方法,我打電話給我的接口回調,

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)都不爲空。

但是當我運行這個程序,我得到這個錯誤

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

也許你正在使用不同的方法onAttach。試試這個(看參數):

@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()); 
    } 
} 

,你需要實現你的活動

相關問題