gpt4 book ai didi

Android 将 Activity 与 Fragment 通信

转载 作者:太空狗 更新时间:2023-10-29 16:40:16 25 4
gpt4 key购买 nike

我不知道发生了什么,但我收到异常并且应用程序卡住。

主要 Activity :

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

fragment :

public MyFragment extends Fragment implements MainAcitivty.OnItemSelectedListener
{
@Override
public void onItemSelected(int resourceId)
{
Log.i("INFO", "Selected: " + resourceId);
}
}

如果我单击选定的按钮,应用会卡住并抛出以下异常:

E/AndroidRuntime(21649): FATAL EXCEPTION: main

E/AndroidRuntime(21649): java.lang.NullPointerException

E/AndroidRuntime(21649): atcom.example.MainActivity.onClick(MainActivity.java:53)

E/AndroidRuntime(21649): atandroid.view.View.performClick(View.java:4232)

E/AndroidRuntime(21649): atandroid.view.View$PerformClick.run(View.java:17298)

E/AndroidRuntime(21649): atandroid.os.Handler.handleCallback(Handler.java:615)

E/AndroidRuntime(21649): atandroid.os.Handler.dispatchMessage(Handler.java:92)

E/AndroidRuntime(21649): at android.os.Looper.loop(Looper.java:137)

E/AndroidRuntime(21649): atandroid.app.ActivityThread.main(ActivityThread.java:4921)

E/AndroidRuntime(21649): atjava.lang.reflect.Method.invokeNative(Native Method)

E/AndroidRuntime(21649): atjava.lang.reflect.Method.invoke(Method.java:511)

E/AndroidRuntime(21649): atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)

E/AndroidRuntime(21649): atcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)

E/AndroidRuntime(21649): at dalvik.system.NativeStart.main(NativeMethod)

最佳答案

MyActivity中添加方法

    public void addListener(MainAcitivty.OnItemSelectedListener listener){        mCallback = listener;    }

并在 MyFragmentonViewCreated() 中调用此方法。
((MyActivity) getActivity).addListener(this);

关于Android 将 Activity 与 Fragment 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18889877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com