Java android导航抽屉没有';我不想被点击
我有一个奇怪的错误,我的导航抽屉似乎没有意识到它正在被点击。我搜索了很多东西,但似乎找不到答案Java android导航抽屉没有';我不想被点击,java,android,Java,Android,我有一个奇怪的错误,我的导航抽屉似乎没有意识到它正在被点击。我搜索了很多东西,但似乎找不到答案 package com.BlackSheepApps.Eventpost.activities; import android.app.ActionBar; import android.app.Activity; import android.content.Intent; import android.content.res.Configuration;
package com.BlackSheepApps.Eventpost.activities;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import com.BlackSheepApps.Eventpost.R;
import com.BlackSheepApps.Eventpost.adapters.AdapterNavigationDrawer;
public class ActivityBasic extends Activity{
private ActionBar actionbar;
private Resources resources;
private String[] drawerStrings;
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle drawerToggle;
private ListView drawerList;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.drawer_layout);
//sets the customized action bar
actionbar = getActionBar();
resources = getResources();
actionbar.setBackgroundDrawable(new ColorDrawable(resources.getColor(R.color.opaque_blue)));
//make the drawer
drawerStrings = resources.getStringArray(R.array.drawer_categories);
drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
drawerList = (ListView)findViewById(R.id.left_drawer);
drawerList.setAdapter(new AdapterNavigationDrawer(this, -1, drawerStrings));
drawerList.setOnItemClickListener(new DrawerItemClickListener());
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_drawer, R.string.app_name, R.string.app_name) {
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
};
// Set the drawer toggle as the DrawerListener
drawerLayout.setDrawerListener(drawerToggle);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
registerViews();
}
/**
* This method is used for registering the views in the layout, BUT First you'll have to start using a self created method : registerLayout(int layout_id) to register the right layout in the right
* place.
*
*/
protected void registerViews(){
}
protected void ActionBarItemRemover(){
}
protected void registerLayout(int layout_id){
LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
View childView = inflater.inflate(layout_id, (ViewGroup)findViewById(layout_id));
drawerLayout.addView(childView);
}
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Log.d("Eventpost", "clicked");
selectItem(arg2);
}
}
private void selectItem(int position){
switch(position){
case 0:
startActivity(new Intent(this, ActivityHomeScreen.class));
break;
case 4:
startActivity(new Intent(this, ActivityProperties.class));
break;
}
}
@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);
drawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Pass the event to ActionBarDrawerToggle, if it returns
// true, then it has handled the app icon touch event
if (drawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
package com.BlackSheepApps.Eventpost.activities;
导入android.app.ActionBar;
导入android.app.Activity;
导入android.content.Intent;
导入android.content.res.Configuration;
导入android.content.res.Resources;
导入android.graphics.drawable.ColorDrawable;
导入android.os.Bundle;
导入android.support.v4.app.ActionBarDrawerToggle;
导入android.support.v4.widget.DrawerLayout;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ListView;
导入com.blacksheepps.Eventpost.R;
导入com.BlackSheepApps.Eventpost.adapters.adapternaviationdrawer;
公共类活动基本扩展活动{
私人ActionBar ActionBar;
私人资源;
私有字符串[]抽屉字符串;
私人抽屉布局;
私人诉讼律师事务所;
私有列表视图抽屉列表;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(右布局、抽屉布局);
//设置自定义的操作栏
actionbar=getActionBar();
resources=getResources();
actionbar.setBackgroundDrawable(新的ColorDrawable(resources.getColor(R.color.不透明蓝));
//做抽屉
drawerStrings=resources.getStringArray(R.array.drawer\u categories);
抽屉布局=(抽屉布局)findViewById(R.id.抽屉布局);
抽屉列表=(列表视图)findViewById(R.id.left\u抽屉);
抽屉列表setAdapter(新的AdapterNavigationDrawer(这个-1,抽屉串));
setOnItemClickListener(新的DroperItemClickListener());
DroperToggle=new ActionBarDrawerToggle(此,抽屉布局,R.drawable.ic_抽屉,R.string.app_名称,R.string.app_名称){
/**当抽屉处于完全关闭状态时调用*/
公共无效onDrawerClosed(视图){
super.onDrawerClosed(视图);
InvalidateOptions SMenu();//创建对OnPrepareOptions SMenu()的调用
}
/**当抽屉处于完全打开状态时调用*/
打开图纸上的公共空白(视图抽屉视图){
super.onDrawerOpened(抽屉视图);
InvalidateOptions SMenu();//创建对OnPrepareOptions SMenu()的调用
}
};
//将抽屉开关设置为抽屉定位器
抽屉布局。设置抽屉链接器(抽屉切换);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
registerViews();
}
/**
*此方法用于在布局中注册视图,但首先必须使用自建方法:registerLayout(int layout_id)在右侧注册正确的布局
*地点。
*
*/
受保护的无效registerViews(){
}
受保护的无效ActionBarItemRemover(){
}
受保护的无效注册表布局(内部布局\u id){
LayoutInflater充气器=(LayoutInflater)this.getSystemService(布局\充气器\服务);
视图子视图=充气器。充气(布局id,(视图组)findViewById(布局id));
抽屉布局。添加视图(儿童视图);
}
私有类DrawerItemClickListener实现ListView.OnItemClickListener{
@凌驾
公共链接(AdapterView arg0、视图arg1、内部arg2、,
长arg3){
Log.d(“Eventpost”、“clicked”);
选择项目(arg2);
}
}
私有void selectItem(内部位置){
开关(位置){
案例0:
startActivity(新意图(此,ActivityHomeScreen.class));
打破
案例4:
startActivity(新意图(此,ActivityProperty.class));
打破
}
}
@凌驾
后期创建时受保护的空(捆绑包savedInstanceState){
super.onPostCreate(savedInstanceState);
//在onRestoreInstanceState发生后同步切换状态。
drawerToggle.syncState();
}
@凌驾
公共无效OnConfiguration已更改(配置newConfig){
super.onConfigurationChanged(newConfig);
drawerToggle.onConfigurationChanged(newConfig);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//如果返回,则将事件传递给ActionBarDrawerToggle
//则它已处理应用程序图标触摸事件
如果(抽屉切换选项项选定(项目)){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
适配器:
package com.BlackSheepApps.Eventpost.adapters;
import android.content.Context;
import android.content.res.Resources;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.BlackSheepApps.Eventpost.R;
public class AdapterNavigationDrawer extends ArrayAdapter<String>{
String[] button_names;
Resources resources;
public AdapterNavigationDrawer(Context context, int resource,
String[] objects) {
super(context, resource, objects);
button_names = objects;
}
@Override
public View getView(int pos, View convertView, ViewGroup parent){
RelativeLayout row = (RelativeLayout)convertView;
if(null == row){
//No recycled View, we have to inflate one.
LayoutInflater inflater = (LayoutInflater)parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = (RelativeLayout)inflater.inflate(R.layout.drawer_row, null);
}
TextView text = (TextView) row.findViewById(R.id.drawer_text);
//ImageView image =(ImageView) row.findViewById(R.id.drawer_image);
text.setText(button_names[pos]);
return row;
}
}
package com.BlackSheepApps.Eventpost.adapters;
导入android.content.Context;
导入android.content.res.Resources;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.RelativeLayout;
导入android.widget.TextView;
导入com.blacksheepps.Eventpost.R;
公共类适配器激活抽屉扩展阵列适配器{
字符串[]按钮名称;
资源;
公共AdapterNavigationDrawer(上下文、int资源、,
字符串[]对象){
超级(上下文、资源、对象);
按钮名称=对象;
}
@凌驾
公共视图getView(int pos、视图转换视图、视图组父视图){
RelativeLayout行=(RelativeLayout)convertView;
如果(空==行){
//没有循环视图,我们必须对其进行充气。
LayoutInflater充气器=(LayoutInflater)parent.getCo
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/drawer_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="23sp"
android:textColor="#FDFFED"
android:layout_marginLeft="5dp"
android:layout_marginTop="20dp"/>
</RelativeLayout>
/***
* Called when invalidateOptionsMenu() is triggered
*/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// if nav drawer is opened, hide the action items
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
isDrawerOpen = false;
// supportInvalidateOptionsMenu(); // creates call to
// onPrepareOptionsMenu()
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
isDrawerOpen = true;
// supportInvalidateOptionsMenu(); // creates call to
// onPrepareOptionsMenu()
}
public void closeDrawer() {
if (isDrawerOpen) {
mDrawerLayout
.closeDrawer((LinearLayout) findViewById(R.id.left_drawer));
}
}