[英]how to Calling function that has been defined in base activity in java android
How can I call a function that has been defined in base activity from other extend class? 如何从其他扩展类中调用在基本活动中定义的函数?
For example my base class is "MainActivity": 例如,我的基类是“ 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: 我在其他文件中定义了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));
}
}
.
.
.
}
}
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. 我试图在MainActivity中定义静态函数,但这不能解决我的问题。
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? 我怎么解决这个问题?
您将要使用一个侦听器,您可以在此处找到一个示例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.