我不知道发生了什么,但我得到了一个例外,应用程序冻结了。
主要活动:
public class MainAcitivty extends FragmentActivity implements OnClickListener
{
// ...
public interface OnItemSelectedListener
{
public void onItemSelected(int resourceId);
}
OnItemSelectedListener mCallback;
@Override
public void onClick(View v)
{
if (v.getId() == R.id.my_imageView)
{
mCallback.onItemSelected(R.id.my_imageView);
}
}
}
片段:
public MyFragment extends Fragment implements MainAcitivty.OnItemSelectedListener
{
@Override
public void onItemSelected(int resourceId)
{
Log.i("INFO", "Selected: " + resourceId);
}
}
如果我单击所选按钮,应用程序将冻结,并抛出以下异常:
E / AndroidRuntime(21649):致命异常:主
E / AndroidRuntime(21649):java.lang.NullPointerException
E / AndroidRuntime(21649):at com.example.MainActivity.onClick(MainActivity.java:53)
E / AndroidRuntime(21649):at android.view.View.performClick(View.java:4232)
E / AndroidRuntime(21649):at android.view.View $ PerformClick.run(View.java:17298)
E / AndroidRuntime(21649):at android.os.Handler.handleCallback(Handler.java:615)
E / AndroidRuntime(21649):at android.os.Handler.dispatchMessage(Handler.java:92)
E / AndroidRuntime(21649):在android.os.Looper.loop(Looper.java:137)E / AndroidRuntime(21649):at android.app.ActivityThread.main(ActivityThread.java:4921)
E / AndroidRuntime(21649):at java.lang.reflect.Method.invokeNative(Native Method)
E / AndroidRuntime(21649):at java.lang.reflect.Method.invoke(Method.java:511)
E / AndroidRuntime(21649):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1027)
E / AndroidRuntime(21649):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
E / AndroidRuntime(21649):at dalvik.system.NativeStart.main(Native 方法)
答案 0 :(得分:4)
在MyActivity
添加方法
public void addListener(MainAcitivty.OnItemSelectedListener listener){ mCallback = listener; }
并在onViewCreated()
的{{1}}中调用此方法。
MyFragment
答案 1 :(得分:1)
我不知道53行是哪一行,但你的mCallback
可能是空的。在解除引用之前检查一下。