2014-03-04 77 views
10

我按下导航抽屉,然后如果我按下后退按钮,应用程序退出而不是返回到上一个活动。如果我更改xml文件,则不会发生此问题。所以我认为这个问题在xml文件中。谁能告诉我有什么问题? 这里的XML code.`如何在Android中关闭BackPress上的抽屉布局?

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="500dp" 
    android:layout_height="200dp" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:src="@drawable/blue_train" /> 

<TextView 
    android:id="@+id/trainName" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_marginBottom="200dp" 
    android:layout_marginLeft="14dp" 
    android:text="Train Name" 
    android:textColor="@color/bluedark" 
    android:textSize="15sp" /> 

<EditText 
    android:id="@+id/etName" 
    android:layout_width="150dp" 
    android:layout_height="40dp" 
    android:layout_alignBaseline="@+id/trainName" 
    android:layout_alignBottom="@+id/trainName" 
    android:layout_marginLeft="30dp" 
    android:layout_toRightOf="@+id/trainName" 
    android:background="@drawable/line" 
    android:ems="10" > 

    <requestFocus /> 
</EditText> 

<Button 
    android:id="@+id/getS" 
    android:layout_width="150dp" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/etName" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="40dp" 
    android:background="@drawable/button2" 
    android:text="Get Train Schedule" 
    android:textColor="@color/white" /> 

`

+0

当你说你改变XML并且问题消失时 - 你以什么方式改变它? – SDJMcHattie

+0

我想通了,如果我删除EditText,它的作品。但是为什么当我有EditText时它不工作? – alu

+0

导致EditText请求焦点,如果EditText未聚焦,则没有问题 – alu

回答

35

这将关闭抽屉时,它的开放和回压,而不是带你回到以前的活动(或退出)。

DrawerLayout drawer... 

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 

    if(drawer.isDrawerOpen(Gravity.LEFT)){ 
     drawer.closeDrawer(Gravity.LEFT); 
    }else{ 
     super.onBackPressed(); 
    } 
} 
+0

您也可以为多个抽屉执行此操作。 if(drawer.isDrawerOpen(Gravity.RIGHT))drawer.closeDrawer(Gravity.RIGHT); –

1
ListView mDrawerList; 

@Override 
public void onBackPressed() { 
// TODO Auto-generated method stub 

if(mDrawerLayout.isDrawerOpen(mDrawerList)){ 
    mDrawerLayout.closeDrawer(mDrawerList); 
}else{ 
    super.onBackPressed(); 
} 
} 
0

我已经做了这种方式:

private DrawerLayout mDrawerLayout; 

的onCreate()

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
mDrawerLayout.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); 

希望这会帮助你。

相关问题