【发布时间】:2014-08-22 16:37:53
【问题描述】:
我正在加载一个Fragment,然后Fragment 创建一个Adapter。 Adapter 有一个 interface。加载implements 和Adapter 的片段。
我发起mCallback时没有错误。
这是适配器中的代码:
Scanlist mScanlist;
ScanlistListener mCallback;
public Scanadapter(Activity a, ArrayList<Scanmodel> d, Resources resLocal){
mActivity = a;
mData = d;
res = resLocal;
sInflater = (LayoutInflater)mActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mScanlist = (Scanlist) mActivity.getFragmentManager().findFragmentById(R.layout.scanlist);
try {
mCallback = (ScanlistListener) mScanlist;
Log.v(TAG, String.valueOf(mCallback)+ " here");
} catch (ClassCastException e) {
throw new ClassCastException(mScanlist.toString()
+ " must implement ScanlistListener");
}
}
private class OnItemClickListener implements OnClickListener{
private int mPosition;
OnItemClickListener(int position){
mPosition = position;
}
@Override
public void onClick(View v) {
mCallback.scanlistclick(v, mPosition);
}
}
public interface ScanlistListener{
public void scanlistclick(View v, int i);
}
当我点击列表中的一个项目时,我得到一个NullPointerException,但try statement 没有给出error exception 启动mCallback 变量。
08-22 10:19:09.099: E/AndroidRuntime(8112): java.lang.NullPointerException
08-22 10:19:09.099: E/AndroidRuntime(8112): at net.xxxxx.adapter.Scanadapter$OnItemClickListener.onClick(Scanadapter.java:140)
08-22 10:19:09.099: E/AndroidRuntime(8112): at android.view.View.performClick(View.java:4489)
08-22 10:19:09.099: E/AndroidRuntime(8112): at android.view.View$PerformClick.run(View.java:18803)
08-22 10:19:09.099: E/AndroidRuntime(8112): at android.os.Handler.handleCallback(Handler.java:730)
08-22 10:19:09.099: E/AndroidRuntime(8112): at android.os.Handler.dispatchMessage(Handler.java:92)
08-22 10:19:09.099: E/AndroidRuntime(8112): at android.os.Looper.loop(Looper.java:137)
08-22 10:19:09.099: E/AndroidRuntime(8112): at android.app.ActivityThread.main(ActivityThread.java:5455)
08-22 10:19:09.099: E/AndroidRuntime(8112): at java.lang.reflect.Method.invokeNative(Native Method)
08-22 10:19:09.099: E/AndroidRuntime(8112): at java.lang.reflect.Method.invoke(Method.java:525)
08-22 10:19:09.099: E/AndroidRuntime(8112): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
08-22 10:19:09.099: E/AndroidRuntime(8112): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
08-22 10:19:09.099: E/AndroidRuntime(8112): at dalvik.system.NativeStart.main(Native Method)
我做错了什么?
【问题讨论】:
标签: android android-fragments implementation android-adapter baseadapter