gpt4 book ai didi

android - 抽屉导航列表元素不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:20 26 4
gpt4 key购买 nike

在抽屉导航上我想要两个功能:导入和导出我的数据库。听起来很简单,但目前它不起作用。带有import元素和export元素的抽屉导航列表不可点击为什么会这样?

MainActivity.java

public class MainActivity extends Activity implements OnClickListener {

private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;

// nav drawer title
private CharSequence mDrawerTitle;

// used to store app title
private CharSequence mTitle;

// slide menu items
private String[] navMenuTitles;
// private TypedArray navMenuIcons;

private ArrayList<NavDrawerItem> navDrawerItems;
private NavDrawerListAdapter adapter;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
tap_on_plus = (ImageView) findViewById(R.id.imageNewNote);
Contact_listview = (ListView) findViewById(R.id.listView1);
findViewById(R.id.button1).setOnClickListener(this);
findViewById(R.id.button2).setOnClickListener(this);
Set_Referash_Data();

} catch (Exception e) {
// TODO: handle exception
Log.e("some error", "" + e);
}

// tikras folderis "/Android/data/com.strategeens"
File direct = new File(Environment.getExternalStorageDirectory()
+ "/BackupFolder");

if (!direct.exists()) {
if (direct.mkdir()) {
// directory is created;
}
}


/////////////naujibundle///////////

mTitle = mDrawerTitle = getTitle();

// load slide menu items
navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);

// nav drawer icons from resources
// navMenuIcons = getResources().obtainTypedArray(R.array.nav_drawer_icons);

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.list_slidermenu);

navDrawerItems = new ArrayList<NavDrawerItem>();

// adding nav drawer items to array
// Home
navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], 1/*navMenuIcons.getResourceId(0, -1)*/));
// Find People
navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], 1/*navMenuIcons.getResourceId(1, -1)*/));

// Recycle the typed array
// navMenuIcons.recycle();

mDrawerList.setOnItemClickListener(new SlideMenuClickListener());

// setting the nav drawer list adapter
adapter = new NavDrawerListAdapter(getApplicationContext(),
navDrawerItems);
mDrawerList.setAdapter(adapter);

// enabling action bar app icon and behaving it as toggle button
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, //nav menu toggle icon
R.string.app_name, // nav drawer open - description for accessibility
R.string.app_name // nav drawer close - description for accessibility
) {
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
// calling onPrepareOptionsMenu() to show action bar icons
invalidateOptionsMenu();
}

public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
// calling onPrepareOptionsMenu() to hide action bar icons
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
}

/**
* Slide menu item click listener
* */
public class SlideMenuClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// display view for selected nav drawer item
switch (position) {
case 0:
importDB();
System.out.println("AAAAAAAAAAAAAAAAAAA1" + position);
break;
case 1:
System.out.println("AAAAAAAAAAAAAAAAAAA2" + position);
exportDB();
break;
}
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}
}

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

/**
* 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.
mDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Pass any configuration change to the drawer toggls
mDrawerToggle.onConfigurationChanged(newConfig);
}
/////////////////////visas kitas sudas///////////pabaiga

// importing database
private void importDB() {
// TODO Auto-generated method stub

try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();

if (sd.canWrite()) {
String currentDBPath = "//data//" + "com.strategeens.drugnotes"
+ "//databases//" + "drugsManager";
String backupDBPath = "/BackupFolder/drugsManager";
File backupDB = new File(data, currentDBPath);
File currentDB = new File(sd, backupDBPath);

FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
Set_Referash_Data();
cAdapter.notifyDataSetChanged();
Toast.makeText(getBaseContext(), backupDB.toString(),
Toast.LENGTH_LONG).show();

}
} catch (Exception e) {

Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG)
.show();

}
}

// exporting database
private void exportDB() {
// TODO Auto-generated method stub

try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();

if (sd.canWrite()) {
String currentDBPath = "//data//" + "com.strategeens.drugnotes"
+ "//databases//" + "drugsManager";
String backupDBPath = "/BackupFolder/drugsManager";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);

FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
Toast.makeText(getBaseContext(), backupDB.toString(),
Toast.LENGTH_LONG).show();

}
} catch (Exception e) {

Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG)
.show();
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.mainmenu, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

// toggle nav drawer on selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle action bar actions click
switch (item.getItemId()) {
case R.id.action_settings:
return true;
// default:
// return super.onOptionsItemSelected(item);
}

super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.item1:

// TODO Auto-generated method stub
Intent add_user = new Intent(MainActivity.this, AddUpdateDrug.class);
add_user.putExtra("called", "add");
add_user.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(add_user);
finish();

}
return false;
}
}

还有我的activity_main.xml文件

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_layout" >

<!-- Framelayout to display Fragments -->
<FrameLayout
android:id="@+id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<!-- Listview to display slider menu -->
<ListView
android:id="@+id/list_slidermenu"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@color/list_divider"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector"
android:background="@color/list_background"/>

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>

<ImageView
android:id="@+id/imageNewNote"
android:layout_width="250dp"
android:layout_height="230dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/tap_on_a_plus"
android:contentDescription="@string/newNote" />

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/imageNewNote"
android:layout_alignParentBottom="true"
android:layout_marginLeft="51dp"
android:text="Export" />

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/button2"
android:text="Import" />

</RelativeLayout>
</android.support.v4.widget.DrawerLayout>

最佳答案

作为抽屉的 ListView 在布局中的后面列出了 View ,导致这些 View 在抽屉上方按 z 顺序排列并干扰点击事件。在布局中移动 ListView,使其列在 RelativeLayout 之后。此外,如果您不打算使用 frame_container FrameLayout,您可以将其删除。

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_layout" >

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>

<ImageView
android:id="@+id/imageNewNote"
android:layout_width="250dp"
android:layout_height="230dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/tap_on_a_plus"
android:contentDescription="@string/newNote" />

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/imageNewNote"
android:layout_alignParentBottom="true"
android:layout_marginLeft="51dp"
android:text="Export" />

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/button2"
android:text="Import" />

</RelativeLayout>

<!-- Listview to display slider menu -->
<ListView
android:id="@+id/list_slidermenu"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@color/list_divider"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector"
android:background="@color/list_background"/>

</android.support.v4.widget.DrawerLayout>

关于android - 抽屉导航列表元素不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25886885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com