簡體   English   中英

如何從導航抽屜的片段中啟動活動

[英]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.

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