2017-01-14 60 views
1

我已經建立了一個導航抽屜。一旦啓動應用我通過下面的代碼直接從「MainActivity」到MainMenuActivity用戶通過意圖「MainActivity」裏面:如何從MainActivity啓動一個片段活動?

Intent Activity = new Intent(MainActivity.this, MainMenuActivity.class); 
    startActivity(Activity); 

但是當應用程序啓動,它的logcat的直接崩潰

Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {package.allineed/Package.MainMenuActivity}; have you declared this activity in your AndroidManifest.xml? 

我宣佈裏面的AndroidManifest.xml MainMenuActivity通過嚮應用程序下面的代碼:

<activity android:name=".MainMenuActivity"></activity> 

,但應用程序崩潰,給了我下面的日誌貓:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{aloweiwi.anas.allineed/aloweiwi.anas.allineed.MainMenuActivity}: java.lang.ClassCastException: aloweiwi.anas.allineed.MainMenuActivity cannot be cast to android.app.Activity 

這是MainMenuActivity:

public class MainMenuActivity extends Fragment{ 
View myView; 


@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container,  Bundle savedInstanceState) { 
    myView=inflater.inflate(R.layout.activity_main_menu,container,false); 

    return myView; 
} 
} 

我就消耗了很多時間,豪可能可以把它解決?

+0

你在AndroidManifest.xml中聲明瞭這個活動嗎? –

+0

''MainMenuActivity''是一個不是'Activity'的片段,你必須決定你想要一個'Activity'還是'Fragment' –

+0

你想要片段還是活動? – Mehdi

回答

0

試試這個 -

public class MainMenuActivity extends FragmentActivity 

你可以在this看看以瞭解更多信息。

你必須嵌入現有活動中的片段,你永遠無法直接調用startActivity()上的一個分段類

0

所有MainMenuActivity首先是Fragment不是Activity。所以不應該在Manifest.xml中聲明爲Activity

而且您無法直接使用Intent調用Fragment

通過使用FragmentManagerFragmentTransaction,您可以將片段加載到活動中。

只需檢查此鏈接如何在活動中使用片段?

http://android-er.blogspot.in/2011/12/programmatically-add-fragment.html

0

如果你想要一個NavigationDrawer,那麼你main_activity.xml應該看到作爲folowed

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <!-- The main content view --> 
    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <!-- The navigation drawer --> 
    <FrameLayout android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" /> 

</android.support.v4.widget.DrawerLayout> 

,那麼你可以通過

Fragment fragment = new MainMenuActivity(); 

// Insert the fragment by replacing any existing fragment 
FragmentManager fragmentManager = getFragmentManager(); 
fragmentManager.beginTransaction() 
    .replace(R.id.left_drawer, fragment) 
    .commit(); 
設置在MainActivity您導航

FrameLayout是一個持有者,您可以在運行時填寫任何佈局。 DrawerLayout中的最後一項用於導航。與android:layout_gravity你可以說,你想要的導航。

相關問題