装载抽屉式导航滑盖动态片段 [英] Load navigation drawer slider with Dynamic Fragments

查看:231
本文介绍了装载抽屉式导航滑盖动态片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在做一个Android应用程序使用导航抽屉我的大学。它有两种类型的用户 - 学生和放大器;学院。所以根据电子邮件ID /用户名我要加载相应的用户的部件在抽屉里/滑块。
我通过这个问题,这表明我们可以在子布局中使用任何布局了:<一href=\"http://stackoverflow.com/questions/16738595/is-it-possible-to-use-something-other-than-a-listview-as-sliding-drawer-in-drawe\">Is它可以使用其他的东西比一个ListView如滑动抽屉drawerlayout

因此​​,为了实现我的逻辑我希望用3动态片段:login_fragment,student_fragment,faculty_fragment。然后使用用户名I型将取代在抽屉里的学生/ faculty_fragment的login_fragment。
但我发现了错误,在装载动态片段抽屉。

这是main_activity code(由抽屉里,我的意思是滑块)我用在抽屉里加载动态片段。主要布局部分即content_frame使用,没有错误同样的办法已经完成了。

抽屉式导航栏布局文件:

  // main_activity.xml布局文件
&LT; android.support.v4.widget.DrawerLayout
的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:ID =@ + ID / drawer_layout
机器人:layout_width =match_parent
机器人:layout_height =match_parent&GT;&LT;! - 为主要内容的视图,该视图下方消耗约占整个
     使用match_parent在两个维度可用空间。 - &GT;
&LT;的FrameLayout
    机器人:ID =@ + ID / content_frame
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent/&GT;&LT; - 安卓!layout_gravity =启动讲述DrawerLayout治疗
     以此为在左侧的滑动抽屉左到右
     语言和右侧从右到左的语言。
     抽屉被赋予了DP一个固定的宽度并延伸的全高
     的容器。的扎实的背景是用于对比
     与内容视图。 - &GT; &LT;的FrameLayout
    机器人:ID =@ + ID / left_drawer
    机器人:layout_width =320dp
    机器人:layout_height =match_parent
    机器人:layout_gravity =开始
    机器人:背景=#111&GT;
&LT; /&的FrameLayout GT;

这是相应的布局java文件,我认为错误是在加载抽屉列表布局:

  // Main_Activity
包com.kodevelop.gndec;
进口android.app.Fragment;
进口android.app.FragmentTransaction;
进口android.app.SearchManager;
进口android.content.Intent;
进口android.content.res.Configuration;
进口android.os.Bundle;
进口android.support.v4.app.ActionBarDrawerToggle;
进口android.support.v4.app.FragmentActivity;
进口android.support.v4.view.GravityCompat;
进口android.support.v4.widget.DrawerLayout;
进口android.view.Menu;
进口android.view.MenuInflater;
进口android.view.MenuItem;
进口android.view.View;
进口android.widget.AdapterView;
进口android.widget.ArrayAdapter;
进口android.widget.ListView;
进口android.widget.Toast;公共类LaunchActivity扩展FragmentActivity {私人DrawerLayout DrawerLayout;
私人的ListView DrawerList;
私人ActionBarDrawerToggle DrawerToggle;@燮pressWarnings(未使用)
私人CharSequence的DrawerTitle;
私人CharSequence的称号;
私有String [] ListTitles;
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.drawerlist_test);    标题= DrawerTitle =的getTitle();
    ListTitles = getResources()getStringArray(R.array.list_array)。
    DrawerLayout =(DrawerLayout)findViewById(R.id.drawer_layout);
    DrawerList =(ListView控件)findViewById(R.id.left_drawer);
    //初始化列表抽屉
    //抽屉打开时也设置覆盖的主要内容自定义阴影
    DrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,GravityCompat.START);
    //片段加入抽屉名单
    片段newFragment;
    FragmentTransaction交易= getFragmentManager()调用BeginTransaction()。
    newFragment =新testfragment();
    transaction.replace(R.id.left_drawer,newFragment);
    transaction.addToBackStack(NULL);
    器transaction.commit();    的System.out.println(CHECK1 ........ +片段创建);    / *
    //设置抽屉的列表视图与项目,然后点击监听器
    DrawerList.setAdapter(新ArrayAdapter&LT;串GT;(这一点,R.layout.drawer_itemlist,ListTitles));
    DrawerList.setOnItemClickListener(新DrawerItemClickListener());
     * /    //使动作条的应用程序图标表现为动作切换导航抽屉
    getActionBar()setDisplayHomeAsUpEnabled(真)。
    getActionBar()setHomeButtonEnabled(真)。    // ActionBarDrawerToggle联系在一起的适当交互
    滑动抽屉以及操作栏的程序图标之间//
    DrawerToggle =新ActionBarDrawerToggle(
            对此,/ *主机活动* /
            DrawerLayout,/ * DrawerLayout对象* /
            R.drawable.ic_drawer,/ *导航抽屉图像替换上插入符* /
            R.string.drawer_open,/ *开放抽屉的描述可访问* /
            R.string.drawer_close / *关闭抽屉的描述可访问* /
            ){
        公共无效onDrawerClosed(查看视图){
            。getActionBar()的setTitle(标题);
            invalidateOptionsMenu(); //创建调用上prepareOptionsMenu()
        }        公共无效onDrawerOpened(查看drawerView){
            。getActionBar()的setTitle(标题);为开/关抽屉//相同的标题
            //getActionBar().setTitle(DrawerTitle);
            invalidateOptionsMenu(); //创建调用上prepareOptionsMenu()
        }
    };
    DrawerLayout.setDrawerListener(DrawerToggle);
    如果(savedInstanceState == NULL){
        选择信息(0);
    }
}
/ **
 *当使用ActionBarDrawerToggle,你必须在调用它
 * onPostCreate()和onConfigurationChanged()...
 * /@覆盖
保护无效onPostCreate(捆绑savedInstanceState){
    super.onPostCreate(savedInstanceState);
    //同步onRestoreInstanceState后切换状态已经发生。
    DrawerToggle.syncState();
}@覆盖
公共无效onConfigurationChanged(配置NEWCONFIG){
    super.onConfigurationChanged(NEWCONFIG);
    //把任何配置更改抽屉切换
    DrawerToggle.onConfigurationChanged(NEWCONFIG);
}
//选项菜单 - 行动起来吧
@覆盖
公共布尔onCreateOptionsMenu(菜单菜单){
    MenuInflater吹气= getMenuInflater();
    inflater.inflate(R.menu.main,菜单);
    返回super.onCreateOptionsMenu(菜单);
}
//每当我们称之为invalidateOptionsMenu()调用
@覆盖
prepareOptionsMenu(菜单菜单)上公共布尔{
    //如果资产净值抽屉被打开,隐藏操作项相关内容视图
    布尔drawerOpen = DrawerLayout.isDrawerOpen(DrawerList);
    menu.findItem(R.id.action_websearch).setVisible(drawerOpen!);
    返回super.on prepareOptionsMenu(菜单);
}@覆盖
公共布尔onOptionsItemSelected(菜单项项){
    //操作栏的家/跟进行动应打开或关闭抽屉。
    // ActionBarDrawerToggle将照顾这。
    如果(DrawerToggle.onOptionsItemSelected(项目)){
        返回true;
    }
    //手柄操作按钮
    开关(item.getItemId()){
    案例R.id.action_websearch:
        //创建意图为这个星球上执行网络搜索
        意向意图=新意图(Intent.ACTION_WEB_SEARCH);
        intent.putExtra(SearchManager.QUERY,getActionBar()的getTitle());
        //捕获事件,有没有活动处理的意图
        如果(intent.resolveActivity(getPackageManager())!= NULL){
            startActivity(意向);
        }其他{
            Toast.makeText(这一点,R.string.app_not_available,Toast.LENGTH_LONG).show();
        }
        返回true;
    默认:
        返回super.onOptionsItemSelected(项目);
    }
}
//导航抽屉列表中,单击
//导航抽屉的点击监听器的ListView
私有类DrawerItemClickListener实现ListView.OnItemClickListener {
    @覆盖
    公共无效onItemClick(适配器视图&LT;&GT;母公司,观景,INT位置,长的id){
        选择信息(位置);
    }
}私人无效选择信息(INT位置){    片段newFragment;
    FragmentTransaction交易= getFragmentManager()调用BeginTransaction()。    开关(位置){
    情况下0:
        newFragment = F1新();
        transaction.replace(R.id.content_frame,newFragment);
        transaction.addToBackStack(NULL);
        器transaction.commit();
        打破;    情况1:
        newFragment =新F2();
        transaction.replace(R.id.content_frame,newFragment);
        transaction.addToBackStack(NULL);
        器transaction.commit();
        打破;    案例2:
        newFragment =新F3();
        transaction.replace(R.id.content_frame,newFragment);
        transaction.addToBackStack(NULL);
        器transaction.commit();
        打破;    案例3:
        newFragment =新F4();
        transaction.replace(R.id.content_frame,newFragment);
        transaction.addToBackStack(NULL);
        器transaction.commit();
        打破;
    }
    DrawerList.setItemChecked(位置,真正的);
    的setTitle(ListTitles [位置]);
    DrawerLayout.closeDrawer(DrawerList);
}
@覆盖
公共无效的setTitle(CharSequence的标题){
    标题=称号;
    。getActionBar()的setTitle(标题);
}
}

这是logcat的错误列表:

  11-24 13:16:53.058:E /跟踪(18812):错误打开跟踪文件:没有这样的文件或目录(2)
11-24 13:16:53.058:W /微量(18812):意外从nativeGetEnabledTags值:0
11-24 13:16:53.058:W /微量(18812):意外从nativeGetEnabledTags值:0
11-24 13:16:53.058:W /微量(18812):意外从nativeGetEnabledTags值:0
11-24 13:16:53.068:W /微量(18812):意外从nativeGetEnabledTags值:0
11-24 13:16:53.068:W /微量(18812):意外从nativeGetEnabledTags值:0
11-24 13:16:53.108:D / AndroidRuntime(18812):关闭VM
11-24 13:16:53.108:W / dalvikvm(18812):主题ID = 1:螺纹未捕获的异常退出(组= 0xb2e17908)
11-24 13:16:53.108:E / AndroidRuntime(18812):致命异常:主要
11-24 13:16:53.108:E / AndroidRuntime(18812):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.kodevelop.gndec / com.kodevelop.gndec.LaunchActivity}:java.lang.ClassCastException:机器人.widget.FrameLayout不能转换为android.widget.ListView
11-24 13:16:53.108:E / AndroidRuntime(18812):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
11-24 13:16:53.108:E / AndroidRuntime(18812):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
11-24 13:16:53.108:E / AndroidRuntime(18812):在android.app.ActivityThread.access $ 600(ActivityThread.java:141)
11-24 13:16:53.108:E / AndroidRuntime(18812):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234)
11-24 13:16:53.108:E / AndroidRuntime(18812):在android.os.Handler.dispatchMessage(Handler.java:99)
11-24 13:16:53.108:E / AndroidRuntime(18812):在android.os.Looper.loop(Looper.java:137)
11-24 13:16:53.108:E / AndroidRuntime(18812):在android.app.ActivityThread.main(ActivityThread.java:5039)
11-24 13:16:53.108:E / AndroidRuntime(18812):在java.lang.reflect.Method.invokeNative(本机方法)
11-24 13:16:53.108:E / AndroidRuntime(18812):在java.lang.reflect.Method.invoke(Method.java:511)
11-24 13:16:53.108:E / AndroidRuntime(18812):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)
11-24 13:16:53.108:E / AndroidRuntime(18812):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-24 13:16:53.108:E / AndroidRuntime(18812):在dalvik.system.NativeStart.main(本机方法)
11-24 13:16:53.108:E / AndroidRuntime(18812):java.lang.ClassCastException:致android.widget.FrameLayout不能转换为android.widget.ListView
11-24 13:16:53.108:E / AndroidRuntime(18812):在com.kodevelop.gndec.LaunchActivity.onCreate(LaunchActivity.java:42)
11-24 13:16:53.108:E / AndroidRuntime(18812):在android.app.Activity.performCreate(Activity.java:5104)
11-24 13:16:53.108:E / AndroidRuntime(18812):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
11-24 13:16:53.108:E / AndroidRuntime(18812):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
11-24 13:16:53.108:E / AndroidRuntime(18812):... 11个


  

我愿意分享整个code以压缩格式,以便导入项目在你的系统中,如果需要的时候。



解决方案

您正在试图获得的FrameLayout的ID,但铸造它作为列表视图

  DrawerList =(ListView控件)findViewById(R.id.left_drawer);

这实际上应该是

  DrawerList =(的FrameLayout)findViewById(R.id.left_drawer);

I'm making an Android App for my college using navigation drawer. It has two types of users - students & faculty. So depending upon the email-id/username I want to load the components of respective user in the drawer/slider. I went through this question, which suggests we can use any layout in the child layout: Is it possible to use something other than a listview as sliding drawer in drawerlayout

So in order to implement my logic I wish to use 3 dynamic fragments : login_fragment, student_fragment, faculty_fragment. And then using the username type I will replace the login_fragment with student/faculty_fragment in the drawer. But I'm getting errors in loading the drawer with dynamic fragment.

This is the main_activity code I'm using to load dynamic fragments in the drawer(by drawer I'm mean the slider). The main layout part i.e content_frame is already done using the same approach with no errors.

navigation drawer layout file :

//main_activity.xml layout file
<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">

<!-- As the main content view, the view below consumes the entire
     space available using match_parent in both dimensions. -->
<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<!-- android:layout_gravity="start" tells DrawerLayout to treat
     this as a sliding drawer on the left side for left-to-right
     languages and on the right side for right-to-left languages.
     The drawer is given a fixed width in dp and extends the full height of
     the container. A solid background is used for contrast
     with the content view. -->

 <FrameLayout
    android:id="@+id/left_drawer"
    android:layout_width="320dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="#111" >
</FrameLayout>

This is the .java file for the corresponding layout and I think the error is in loading the drawer list layout :

// Main_Activity
package com.kodevelop.gndec;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.app.SearchManager;
import android.content.Intent;
import android.content.res.Configuration; 
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class LaunchActivity extends FragmentActivity {

private DrawerLayout DrawerLayout;
private ListView DrawerList;
private ActionBarDrawerToggle DrawerToggle;

@SuppressWarnings("unused")
private CharSequence DrawerTitle;
private CharSequence Title;
private String[] ListTitles;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.drawerlist_test);

    Title = DrawerTitle = getTitle();
    ListTitles = getResources().getStringArray(R.array.list_array);
    DrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    DrawerList = (ListView) findViewById(R.id.left_drawer);


    // initialize drawer list 
    // Also set a custom shadow that overlays the main content when the drawer opens
    DrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);


    // add fragments to drawer list
    Fragment newFragment;
    FragmentTransaction transaction = getFragmentManager().beginTransaction();
    newFragment = new testfragment();
    transaction.replace(R.id.left_drawer, newFragment);
    transaction.addToBackStack(null);
    transaction.commit();

    System.out.println("check1........ + fragment created");

    /*
    // set up the drawer's list view with items and click listener
    DrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_itemlist, ListTitles));
    DrawerList.setOnItemClickListener(new DrawerItemClickListener());
     */

    // enable ActionBar app icon to behave as action to toggle nav drawer
    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);

    // ActionBarDrawerToggle ties together the the proper interactions
    // between the sliding drawer and the action bar app icon
    DrawerToggle = new ActionBarDrawerToggle(
            this,                  /* host Activity */
            DrawerLayout,         /* DrawerLayout object */
            R.drawable.ic_drawer,  /* nav drawer image to replace 'Up' caret */
            R.string.drawer_open,  /* "open drawer" description for accessibility */
            R.string.drawer_close  /* "close drawer" description for accessibility */
            ) {
        public void onDrawerClosed(View view) {
            getActionBar().setTitle(Title);
            invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }

        public void onDrawerOpened(View drawerView) {
            getActionBar().setTitle(Title); // same title for open/close drawer
            //getActionBar().setTitle(DrawerTitle);
            invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }
    };
    DrawerLayout.setDrawerListener(DrawerToggle);
    if (savedInstanceState == null) {
        selectItem(0);
    }
}


/**
 * When using the ActionBarDrawerToggle, you must call it during
 * onPostCreate() and onConfigurationChanged()...
 */

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    DrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // Pass any configuration change to the drawer toggle
    DrawerToggle.onConfigurationChanged(newConfig);
}   


// option menu - action bar   
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    return super.onCreateOptionsMenu(menu);
}


// Called whenever we call invalidateOptionsMenu()
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    // If the nav drawer is open, hide action items related to the content view
    boolean drawerOpen = DrawerLayout.isDrawerOpen(DrawerList);
    menu.findItem(R.id.action_websearch).setVisible(!drawerOpen);
    return super.onPrepareOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // The action bar home/up action should open or close the drawer.
    // ActionBarDrawerToggle will take care of this.
    if (DrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }


    // Handle action buttons
    switch(item.getItemId()) {
    case R.id.action_websearch:
        // create intent to perform web search for this planet
        Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
        intent.putExtra(SearchManager.QUERY, getActionBar().getTitle());
        // catch event that there's no activity to handle intent
        if (intent.resolveActivity(getPackageManager()) != null) {
            startActivity(intent);
        } else {
            Toast.makeText(this, R.string.app_not_available, Toast.LENGTH_LONG).show();
        }
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}


// Nav Drawer List click
// The click listener for ListView in the navigation drawer
private class DrawerItemClickListener implements ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        selectItem(position);
    }
}

private void selectItem(int position) {

    Fragment newFragment;
    FragmentTransaction transaction = getFragmentManager().beginTransaction();

    switch (position) {
    case 0:
        newFragment = new f1();
        transaction.replace(R.id.content_frame, newFragment);
        transaction.addToBackStack(null);
        transaction.commit();
        break;

    case 1:
        newFragment = new f2();
        transaction.replace(R.id.content_frame, newFragment);
        transaction.addToBackStack(null);
        transaction.commit();
        break;

    case 2:
        newFragment = new f3();
        transaction.replace(R.id.content_frame, newFragment);
        transaction.addToBackStack(null);
        transaction.commit();
        break;

    case 3:
        newFragment = new f4();
        transaction.replace(R.id.content_frame, newFragment);
        transaction.addToBackStack(null);
        transaction.commit();
        break;  


    }
    DrawerList.setItemChecked(position, true);
    setTitle(ListTitles[position]);
    DrawerLayout.closeDrawer(DrawerList);   
}


@Override
public void setTitle(CharSequence title) {
    Title = title;
    getActionBar().setTitle(Title);
}
}

And this is the logcat error list :

    11-24 13:16:53.058: E/Trace(18812): error opening trace file: No such file or directory (2)
11-24 13:16:53.058: W/Trace(18812): Unexpected value from nativeGetEnabledTags: 0
11-24 13:16:53.058: W/Trace(18812): Unexpected value from nativeGetEnabledTags: 0
11-24 13:16:53.058: W/Trace(18812): Unexpected value from nativeGetEnabledTags: 0
11-24 13:16:53.068: W/Trace(18812): Unexpected value from nativeGetEnabledTags: 0
11-24 13:16:53.068: W/Trace(18812): Unexpected value from nativeGetEnabledTags: 0
11-24 13:16:53.108: D/AndroidRuntime(18812): Shutting down VM
11-24 13:16:53.108: W/dalvikvm(18812): threadid=1: thread exiting with uncaught exception (group=0xb2e17908)
11-24 13:16:53.108: E/AndroidRuntime(18812): FATAL EXCEPTION: main
11-24 13:16:53.108: E/AndroidRuntime(18812): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kodevelop.gndec/com.kodevelop.gndec.LaunchActivity}: java.lang.ClassCastException: android.widget.FrameLayout cannot be cast to android.widget.ListView
11-24 13:16:53.108: E/AndroidRuntime(18812):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
11-24 13:16:53.108: E/AndroidRuntime(18812):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
11-24 13:16:53.108: E/AndroidRuntime(18812):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
11-24 13:16:53.108: E/AndroidRuntime(18812):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
11-24 13:16:53.108: E/AndroidRuntime(18812):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-24 13:16:53.108: E/AndroidRuntime(18812):    at android.os.Looper.loop(Looper.java:137)
11-24 13:16:53.108: E/AndroidRuntime(18812):    at android.app.ActivityThread.main(ActivityThread.java:5039)
11-24 13:16:53.108: E/AndroidRuntime(18812):    at java.lang.reflect.Method.invokeNative(Native Method)
11-24 13:16:53.108: E/AndroidRuntime(18812):    at java.lang.reflect.Method.invoke(Method.java:511)
11-24 13:16:53.108: E/AndroidRuntime(18812):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-24 13:16:53.108: E/AndroidRuntime(18812):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-24 13:16:53.108: E/AndroidRuntime(18812):    at dalvik.system.NativeStart.main(Native Method)
11-24 13:16:53.108: E/AndroidRuntime(18812): Caused by: java.lang.ClassCastException: android.widget.FrameLayout cannot be cast to android.widget.ListView
11-24 13:16:53.108: E/AndroidRuntime(18812):    at com.kodevelop.gndec.LaunchActivity.onCreate(LaunchActivity.java:42)
11-24 13:16:53.108: E/AndroidRuntime(18812):    at android.app.Activity.performCreate(Activity.java:5104)
11-24 13:16:53.108: E/AndroidRuntime(18812):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
11-24 13:16:53.108: E/AndroidRuntime(18812):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
11-24 13:16:53.108: E/AndroidRuntime(18812):    ... 11 more

I'm willing to share the whole code in zipped format so as to import the project in your system, if need arises.

解决方案

You are trying to get the ID of a framelayout but casting it as listview

DrawerList = (ListView) findViewById(R.id.left_drawer);

which should actually be

DrawerList = (FrameLayout) findViewById(R.id.left_drawer);

这篇关于装载抽屉式导航滑盖动态片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆