-4

매니페스트 파일에 몇 가지 선언이 있습니다. 나는 그 일을 시도했지만 몇 가지 오류가 계속 발생했습니다. 내 응용 프로그램은 정상적으로 실행되지만 메뉴 항목을 선택하면 내 응용 프로그램이 중지됩니다.내 탐색 창에서 메뉴를 클릭하여 새 액티비티를 열 수 있습니다.

의 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.sachinsharma.nav"> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

또한 나는 다시 내가 한 나의 새로운 활동을 시작하는 의도 방법을 사용해야 할 것이라는 점을 알고있다하지만 같은 문제가 유지합니다.

MainActivity.java

package com.example.sachinsharma.nav 
import android.app.Fragment; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.app.FragmentTransaction; 
import android.util.Log; 
import android.view.View; 
import android.support.design.widget.NavigationView; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 

import static android.R.attr.value; 

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
    } 

    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

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

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 

     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    private void displaySelectedScreen(int id){ 

     Fragment fragment = null; 
     switch(id) { 
      case R.id.nav_dashboard: 
       fragment = new FragDashboard(); 
       break; 
      case R.id.nav_attendance: 
       fragment = new FragAttendance(); 
       break; 
//   case R.id.nav_homework: 
//    break; 
//   case R.id.nav_exams: 
//    break; 
//   case R.id.nav_fee: 
//    break; 
//   case R.id.nav_notifications: 
//    break; 
//   case R.id.nav_tracking: 
//    break; 
//   case R.id.nav_profile: 
//    break; 
     } 

     if(fragment != null){ 

      FragmentTransaction ft = getFragmentManager().beginTransaction(); 

      ft.replace(R.id.content_main, fragment); 
      ft.commit(); 

      //this transaction does not replace layouts completely, it just overlaps and the rest 
      //of content_main layout can still be seen 
     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
    } 

    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     displaySelectedScreen(id); 

     return true; 
    } 
} 

NewActivity.java

package com.example.sachinsharma.nav; 

import android.os.Bundle; 
import android.os.PersistableBundle; 
import android.support.annotation.Nullable; 

/** 
* Created by sachinsharma on 4/4/17. 
*/ 

public class NewActivity extends MainActivity{ 

    @Override 
    public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) { 
     super.onCreate(savedInstanceState, persistentState); 
    } 
} 

다음 내 서랍의 메뉴 항목입니다.

action_main_drawer.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 


    <item 
     android:id="@+id/nav_dashboard" 
     android:icon="@mipmap/ic_dashboard_black_24dp" 
     android:title="Dashboard" /> 
    <item 
     android:id="@+id/nav_attendance" 
     android:icon="@mipmap/ic_watch_later_black_24dp" 
     android:title="Attendance" /> 
    <item 
     android:id="@+id/nav_homework" 
     android:icon="@mipmap/ic_announcement_black_24dp" 
     android:title="Homework" /> 
    <item 
     android:id="@+id/nav_exams" 
     android:icon="@mipmap/ic_assignment_black_24dp" 
     android:title="Exams" /> 
    <item 
     android:id="@+id/nav_fee" 
     android:icon="@drawable/rupee" 
     android:title="Fee" /> 
    <item 
     android:id="@+id/nav_notifications" 
     android:icon="@mipmap/ic_notifications_active_black_24dp" 
     android:title="Notifications" /> 
    <item 
     android:id="@+id/nav_tracking" 
     android:icon="@mipmap/ic_directions_bus_black_24dp" 
     android:title="Tracking" /> 
    <item 
     android:id="@+id/nav_profile" 
     android:icon="@mipmap/ic_account_circle_black_24dp" 
     android:title="Profile" /> 


</menu> 
+0

는 친절이 나를 도와 도움이 될 것입니다. 내가 안드로이드를 처음 접했을 때. –

+0

오류 로그를 게시 할 수 있습니까? – FAT

+0

NavigationDrawer를 사용하는 경우 조각을 사용하고 전환하는 것이 좋습니다. 참조 용 링크는 다음과 같습니다. http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/ –

답변

0

것은 당신이 조각을 사용해야합니다. 당신이하고있는 것은 네비게이션 서랍이없는 또 다른 액티비티와 the fact is you can have only one navigation drawer per activity but multiple fragments per activity and not multiple activities per activity을 여는 것입니다.

조각을 사용하면 모든 것이 잘 작동하여 앱에서 많은 활동을하는 것이 뒤처 지거나 사용자가 앱을 제거 할 가능성이 높습니다.

기타 문의 사항은 for the code just create new project in android studio and select navigation drawer activity over there and create your project after that read the code you will get the concept of fragments으로 알려 주시기 바랍니다.

행운을 빈다. 에서

+0

조각을 사용하여 코드를 업데이트했지만 이제는 메뉴 레이아웃이 끝났습니다. 기존 레이아웃과 너무 완전하지 않습니다. MainActivity.java 코드를 확인하십시오. 자세한 내용이 필요하면 문의하십시오. –

+0

프래그먼트를 사용하여 코드를 업데이트했지만 현재 메뉴의 레이아웃이 기존 레이아웃을 넘어서고 너무 복잡합니다. MainActivity.java를 확인하십시오. nav_dashboard.xml에는 텍스트 대시 보드가있는 textview가 있습니다.이 텍스트 뷰는 완전히 대체하지 않고 실행 프로그램 활동의 요소와 함께 계속 나타납니다. –

+0

네비게이션으로 데모 프로젝트를 만들지 않았다고 생각합니다.것은 당신의 mainactivity xml 파일에있을 것입니다 다른 파편을 대체 돌봐주는 콘텐츠 XML 파일이 될 것입니다 –

0
  1. 선언 NewActivity 당신의
  2. AndroidManifest.xmlNewActivity에 대한 테마 AppTheme.NoActionBar을 적용하는 것을 잊지 마십시오.

업데이트하여 다음과 같이 AndroidMenifest.xml :

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.sachinsharma.nav"> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 

     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity 
      android:name=".NewActivity" 
      android:theme="@style/AppTheme.NoActionBar"> 
     </activity> 

    </application> 
</manifest> 

희망이 ~

+0

이 작업을 시도했지만 내 응용 프로그램이 메뉴 선택에 계속 충돌합니다. 왜 그런 일이 일어날 지 아십니까? –

+0

오류 로그 첨부 – FAT

관련 문제