簡體   English   中英

從片段失敗開始Intent活動-Android

[英]Start Intent activity from fragment fail - android

我想從片段開始活動,但失敗。

這是我的代碼

MainActivity myactivity = (MainActivity) getActivity();


Intent intent = new Intent(myactivity, PopUpImageActivity.class);
Bundle extras = new Bundle();
myactivity.startMyIntent(intent);

嘗試這個:

    startActivity(new Intent(getActivity().getApplicationContext(), YourActivity.class));

除了從您的activity中進行intent ,為什么不對fragment類本身進行intent

例如,

Intent intent = new Intent(getActivity(), PopUpImageActivity.class);
getActivity().startActivity(intent);

這應該可以工作,並且不需要訪問您的activity因為所有fragment仍然駐留在一個activity ,並且它本身已經知道了要駐留的activity ,而沒有指定它

上面的答案可能是正確的,也可能不是正確的,但是為了最佳實踐,總是允許通過包含相應 FragmentActivity進行交易。

利用Fragment中interface onAttach ()來調用封閉的Activity並從該活動調用該活動,並允許進行另一個活動/片段事務。

示例代碼如下所示:

public class MyFragmentExample extends Fragment{

//Creating instance of Interface
AnyInterfaceName anyInterfaceName;


/*
This onAttach is responsible for attaching the interface
listener of fragment to Activity
*/
 @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try {
            anyInterfaceName = (AnyInterfaceName) context;
        } catch (ClassCastException ex) {
            throw new ClassCastException(ex.getMessage() + "must implement AnyInterfaceName");
        }
    }

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return view;
    }


// Define an interface with any name
public interface AnyInterfaceName{
    /*
      you can give any name to this function & this
      function will be implemented later in activity
    */
    void startAnotherActivity();
}
}

現在在“活動”端:在擴展Activity / AppCompActivity之后, 將其添加到頂部

實現MyFragment.AnyInterfaceName

之后,只需實現方法方法內部,就可以使用Intent從Activity轉移到Another Activity。

注意:當您要啟動另一個Activity時, 不要忘記分段調用該接口。 只需這樣稱呼它:

anyInterfaceName.startAnotherActivity();

這可能是一項漫長的工作,但對於最佳實踐而言,確實如此。

從Android官方網站與活動溝通看看這里

希望能幫助到你 !!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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