如何从MainActivity启动片段活动?

时间:2017-01-14 13:58:05

标签: java android android-navigation-drawer

我已经建了一个导航抽屉。一旦应用程序启动,我将指导用户来自" MainActivity"通过以下代码内部的#34; MainActivity"来实现MainMenuActivity:

    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>

但应用程序崩溃并给了我以下logcat:

    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;
}
}

我花了很多时间,很可能它会被解决?

3 个答案:

答案 0 :(得分:0)

试试这个 -

public class MainMenuActivity extends FragmentActivity

您可以查看this了解详情。

您必须将片段嵌入到现有活动中,您永远不能直接在片段类上调用startActivity()

答案 1 :(得分:0)

首先MainMenuActivityFragment而不是Activity。因此,不应在Manifest.xml中声明为Activity

并且您无法使用Intent直接调用Fragment

通过使用FragmentManagerFragmentTransaction,您可以将片段加载到活动中。

只需查看关于如何在活动中使用片段的链接?

  

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

答案 2 :(得分:0)

如果你想要一个NavigationDrawer,那么你应该看到main_activity.xml如下所示

<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>

然后您可以通过

在MainActivity中设置导航
Fragment fragment = new MainMenuActivity();

// Insert the fragment by replacing any existing fragment
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
     .replace(R.id.left_drawer, fragment)
     .commit();

FrameLayout是持有者,您可以在运行时填充任何布局。 DrawerLayout中的最后一项用于导航。使用android:layout_gravity,您可以说,您想要导航的位置。