[英]How to move from a fragment of a navigation drawer to an Activity on Android Studio?
[英]how to launch an activity from a fragment of a navigation drawer
我建立了一個導航抽屜。 應用啟動時,我將用戶直接從MainActivity轉到“ MainMenuActivity”活動。 在“ MainMenuActivity”內部,有一個按鈕可以將用戶定向到另一個活動,即“訂單列表”。 我應用了兩個代碼部分,但不起作用:
第一個代碼:
public class MainMenuActivity extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_mainmenu, container, false);
Button Orderlistbtn = (Button) rootView.findViewById(R.id.orderlistbtn);
Orderlistbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainMenuActivity.this, OrderList.class);
startActivity(intent);
}
});
return rootView;
}
}
應用程序無法運行,第一個代碼在logcat中給我以下錯誤:
Error:(41, 33) error: no suitable constructor found for Intent(MainMenuActivity,Class<OrderList>)
constructor Intent.Intent(String,Uri) is not applicable
(argument mismatch; MainMenuActivity cannot be converted to String)
constructor Intent.Intent(Context,Class<?>) is not applicable
(argument mismatch; MainMenuActivity cannot be converted to Context)
第二個代碼:
public class MainMenuActivity extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_mainmenu, container, false);
Button Orderlistbtn = (Button) rootView.findViewById(R.id.orderlistbtn);
Orderlistbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), OrderList.class);
startActivity(intent);
}
});
return rootView;
}
}
但應用程序啟動后由於以下logcat錯誤而崩潰
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{package/package.MainMenuActivity}: java.lang.ClassCastException: package.MainMenuActivity cannot be cast to android.app.Activity
這是“ activity_mainmenu.xml”文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:background="@android:color/background_light">
<Button
android:background="#ffff8800"
android:textColor="@android:color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" My order list "
android:id="@+id/orderlistbtn"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
/>
</RelativeLayout>
Fragment中的getActivity()返回Fragment當前與之關聯的Activity。
Intent intent = new Intent(getActivity(), OrderList.class);
startActivity(intent);
編輯
其次,您將收到ClassCastException
拋出該異常以指示代碼已嘗試將對象強制轉換為不是實例的子類。
使用下面的代碼調用下一個活動,希望這可以解決您的問題
Intent intent = new Intent((ParentActivity)getActivity(), NextActivity.class);
(ParentActivity)getActivity().startActivity(myIntent);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.