2017-01-14 25 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你可以说,你想要的导航。

相关问题