![](/img/trans.png)
[英]IllegalStateException Activity has been destroyed error android
[英]how to Calling function that has been defined in base activity in java android
如何從其他擴展類中調用在基本活動中定義的函數?
例如,我的基類是“ MainActivity”:
public class MainActivity extends ActionBar{
@Override
public void onCreate(Bundle savedInstanceState) {
.
.
.
SuperAwesomeCardFragment.newInstance(position,tabs.getJSONObject(position));
.
.
.
}
public void showContent(Integer integer) {
QuickContactFragment dialog = new QuickContactFragment();
dialog.show(getFragmentManager(), "QuickContactFragment");
}
}
我在其他文件中定義了SuperAwesomeCardFragment類,例如:
public class SuperAwesomeCardFragment extends Fragment {
public static SuperAwesomeCardFragment newInstance(int position, JSONObject jsonTab) {
SuperAwesomeCardFragment f = new SuperAwesomeCardFragment();
Bundle b = new Bundle();
b.putInt(ARG_POSITION, position);
b.putString(ARG_STRINGTAB, jsonTab.toString());
f.setArguments(b);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
.
.
.
myListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) {
MainActivity m = new MainActivity();
m.showContent(getPostId(position));
}
}
.
.
.
}
}
當我打電話時:
m.showContent(getPostId(position));
我遇到了這個錯誤:
08-15 03:24:19.194: E/AndroidRuntime(1381): Uncaught handler: thread main exiting due to uncaught exception
08-15 03:24:19.204: E/AndroidRuntime(1381): java.lang.IllegalStateException: Activity has been destroyed
08-15 03:24:19.204: E/AndroidRuntime(1381): at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1342)
08-15 03:24:19.204: E/AndroidRuntime(1381): at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
08-15 03:24:19.204: E/AndroidRuntime(1381): at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
08-15 03:24:19.204: E/AndroidRuntime(1381): at android.support.v4.app.DialogFragment.show(DialogFragment.java:127)
08-15 03:24:19.204: E/AndroidRuntime(1381): at com.astuetz.viewpager.extensions.sample.MainActivity.showContent(MainActivity.java:64)
08-15 03:24:19.204: E/AndroidRuntime(1381): at com.astuetz.viewpager.extensions.sample.SuperAwesomeCardFragment$2.onItemClick(SuperAwesomeCardFragment.java:161)
08-15 03:24:19.204: E/AndroidRuntime(1381): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
08-15 03:24:19.204: E/AndroidRuntime(1381): at android.widget.ListView.performItemClick(ListView.java:3285)
08-15 03:24:19.204: E/AndroidRuntime(1381): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1640)
08-15 03:24:19.204: E/AndroidRuntime(1381): at android.os.Handler.handleCallback(Handler.java:587)
08-15 03:24:19.204: E/AndroidRuntime(1381): at android.os.Handler.dispatchMessage(Handler.java:92)
08-15 03:24:19.204: E/AndroidRuntime(1381): at android.os.Looper.loop(Looper.java:123)
08-15 03:24:19.204: E/AndroidRuntime(1381): at android.app.ActivityThread.main(ActivityThread.java:4363)
08-15 03:24:19.204: E/AndroidRuntime(1381): at java.lang.reflect.Method.invokeNative(Native Method)
08-15 03:24:19.204: E/AndroidRuntime(1381): at java.lang.reflect.Method.invoke(Method.java:521)
08-15 03:24:19.204: E/AndroidRuntime(1381): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
08-15 03:24:19.204: E/AndroidRuntime(1381): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
08-15 03:24:19.204: E/AndroidRuntime(1381): at dalvik.system.NativeStart.main(Native Method)
我試圖在MainActivity中定義靜態函數,但這不能解決我的問題。
當我評論這兩行時:
public void showContent(Integer integer) {
//QuickContactFragment dialog = new QuickContactFragment();
//dialog.show(getFragmentManager(), "QuickContactFragment");
}
沒問題,沒有錯誤。
我怎么解決這個問題?
您將要使用一個偵聽器,您可以在此處找到一個示例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.