簡體   English   中英

如何調用已在Java 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM