2014-09-17 2 views
2

탐색 서랍에 두 가지 기능이 필요합니다. 내 데이터베이스를 가져오고 내 보내십시오. 간단하지만 순간에 그것은 작동하지 않습니다. 가져 오기 요소 및 내보내기 요소가있는 탐색 창 목록은 클릭 할 수 없습니다. 이유는 무엇입니까?탐색 서랍 목록 요소가 작동하지 않습니다.

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> 

답변

3

목록보기 당신의 서랍에있다. 레이아웃의 뒤쪽에 뷰가 나열되어 해당 뷰가 서랍 위에 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> 
+0

내가 그 문제는 XML 파일을 함께 생각, 감사합니다,하지만 더 제대로 XML을 편집하는 방법을 말해 줄 수 있을까? – galvakojis

+0

감사합니다!이 z 순서를 위해 작동하지 않는, 나의 경우에는.. – biswajitGhosh

0

당신의 방법은 다음과 같이해야한다 :이다

mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       // selectItem(position); 
      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); 
} 
+0

목록 요소가 여전히 클릭 할 수 없습니다 :( – galvakojis

관련 문제