简体   繁体   English

如何调用已在Java android中的基本活动中定义的函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM