2015-09-15 35 views
1

我有一個啓動器Activity A調用一個Activity B. B有多個片段。現在我想要的是能夠從其中一個碎片中殺死B.我用getActivity().finish(),但它會殺死片段。get activity()。finish()不是查殺活動

如何殺死片段中的活動/退出應用程序?

+1

其實它的工作原理,確保你的片段不是來自活動A. –

+0

它沒有在我的情況。該應用程序仍在運行,只是該片段將被殺死,但活動仍將在那裏。 –

+0

你試過了嗎((ActivityB)getActivity())。finish –

回答

1

有在文檔中討論的方式:http://developer.android.com/training/basics/fragments/communicating.html

Fragment限定其中Activity實現的接口。然後調用Activity,然後讓Activity完成(或其他)。

public class MyActivity extends Activity 
    implements MyFragment.MyListener { 

    public void onMyCancel() { 
     finish(); 
    } 
} 


public class MyFragment extends Fragment { 
    private MyListener callback; 

    @Override 
    public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    callback= (MyListener) activity; 
    } 

    public interface MyListener { 
     public void onMyCancel(); 
    } 

    public void btnCancel(View v) { 
     callback.onMyCancel(); 
    } 
} 
+0

這聽起來像一個優雅的解決方案。讓我試試看。快速的問題:將調用一個活動回顯示任何閃爍像活動已啓動並剛剛殺害。因爲第一個片段在調用活動B時會自動充氣。 –

+0

如果我有多個片段嘗試使用相同的功能,該怎麼辦?我們只是說有多個片段,當我明確地聲明我正在實現接口的片段時,我將如何實現接口? –

+0

這只是'getActivity()。finish()'的更復雜版本。 – Ridcully

-1

,如果你想關閉您的應用程序,你可以簡單地使用:

System.exit(0); 

這會殺了整個申請過程。

+0

請在發佈答案前仔細閱讀該問題。 – footyapps27

0

您只能致電在您的活動B中完成(),這會關閉您當前的活動。

相關問題