How can I call a function that has been defined in base activity from other extend class?
For example my base class is "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");
}
}
And I defined SuperAwesomeCardFragment class in other file like:
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));
}
}
.
.
.
}
}
When I call :
m.showContent(getPostId(position));
I faced this error :
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)
I tried to define static function in MainActivity but this is not solved my problem.
And also when I commented this two lines:
public void showContent(Integer integer) {
//QuickContactFragment dialog = new QuickContactFragment();
//dialog.show(getFragmentManager(), "QuickContactFragment");
}
No problem and no error found.
How can I solve this problem?
您将要使用一个侦听器,您可以在此处找到一个示例
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.