[英]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
,而沒有指定它
上面的答案可能是正確的,也可能不是正確的,但是為了最佳實踐,總是允許通過包含相應 Fragment的Activity進行交易。
利用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.