2016-07-26 5 views
0

나는 안드로이드에서 초보자입니다. 내비게이션 드로어 목록 항목의 다른 활동 클래스 NewTest.class onclick을 열려고합니다. 그러나 내가 얻고 있습니다 /com.navigation E/MainActivity : 조각을 만드는 중 오류가 발생했습니다. 친절하게 말해서이게 뭐가 잘못 됐니? 감사. 여기 MainActivity.class탐색 서랍의 목록 항목을 클릭하면 다른 활동 수업을 여는 방법은 무엇입니까?

내 코드
public class MainActivity extends AppCompatActivity { 

private String[] mNavigationDrawerItemTitles; 
private DrawerLayout mDrawerLayout; 
private ListView mDrawerList; 
Toolbar toolbar; 
private CharSequence mDrawerTitle; 
private CharSequence mTitle; 
android.support.v7.app.ActionBarDrawerToggle mDrawerToggle; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mTitle = mDrawerTitle = getTitle(); 
    mNavigationDrawerItemTitles = getResources().getStringArray(R.array.navigation_drawer_items_array); 
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerList = (ListView) findViewById(R.id.left_drawer); 

    setupToolbar(); 

    DataModel[] drawerItem = new DataModel[3]; 

    drawerItem[0] = new DataModel(R.drawable.connect, "Connect"); 
    drawerItem[1] = new DataModel(R.drawable.connect, "Fixtures"); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(false); 
    getSupportActionBar().setHomeButtonEnabled(true); 

    DrawerItemCustomAdapter adapter = new DrawerItemCustomAdapter(this, R.layout.list_view_item_row, drawerItem); 
    mDrawerList.setAdapter(adapter); 
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 
    setupDrawerToggle(); 

} 

private class DrawerItemClickListener implements ListView.OnItemClickListener { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     selectItem(position); 
    } 

} 

private void selectItem(int position) { 

    ConnectFragment fragment = null; 
    switch (position) { 

     case 0: 
      fragment = new ConnectFragment(); 
      break; 

     case 1: 
      Intent a = new Intent(MainActivity.this, NewTest.class); 
      startActivity(a); 
      break; 

     default: 
      break; 

    } 
    Toast.makeText(this, "Selected Item Position::" + position, Toast.LENGTH_LONG).show(); 

    if (fragment != null) { 
     FragmentManager fragmentManager = getSupportFragmentManager(); 
     int commit = fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit(); 

     mDrawerList.setItemChecked(position, true); 
     mDrawerList.setSelection(position); 
     setTitle(mNavigationDrawerItemTitles[position]); 
     mDrawerLayout.closeDrawer(mDrawerList); 

    } else { 
     Log.e("MainActivity", "Error in creating fragment"); 
    } 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

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

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    mDrawerToggle.syncState(); 
} 

void setupToolbar() { 
    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 
} 

void setupDrawerToggle() { 
    mDrawerToggle = new android.support.v7.app.ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.app_name, R.string.app_name); 
    //This is necessary to change the icon of the Drawer Toggle upon state change. 
    mDrawerToggle.syncState(); 
} 

}

+0

포스트 –

+0

오류가 selectItem 방법에 오류 로그. # 1의 경우에는 코드를 전달하지 않으므로 코드가 아래의 if 문에 도달하면 초기화 된 조각을 찾을 수 없으며 오류가 발생합니다. NewTest.class를 조각화하고 다음과 같이 초기화하십시오. NewTest testFragment = new NewTest(); –

+0

NewTest 클래스에 게시 메서드 로직을 작성하여 작업해야합니다. 프래그먼트로 변환 할 수 없습니다. – Rujuta

답변

0

당신은 onNavigationItemSelected 그것에 대해() 메소드를 사용할 수있다. 당신이 아래와 같이 달성 할 수

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

    if (id == R.id.idofYourNavmenu) 
    { 
     Intent intent = new Intent(CurrentActivity.this, ActivityToCall.class); 
     startActivity(intent); 
    } 

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

:

Fragment fragment = null; 
    Class fragmentClass = null; 
    if (id == R.id.nav_1) { 
     fragmentClass = demo1.class; 

    } else if (id == R.id.nav_2) { 
//pass Activity class where you want to navigate 

     fragmentClass=CredentialActivity.class; 
    } 

try { 
     if(fragmentClass.newInstance() instanceof Fragment) { 
      fragment = (Fragment) fragmentClass.newInstance(); 

      if (fragmentClass.getSimpleName().equals("DailyReport")) { 
       Bundle bundle = new Bundle(); 

       // Insert the fragment by replacing any existing fragment 
       FragmentManager fragmentManager = getSupportFragmentManager(); 

       fragmentManager.beginTransaction().replace(R.id.home_layout, fragment).commit(); 
       // Highlight the selected item has been done by NavigationView 
       item.setChecked(true); 
       // Set action bar title 
       setTitle(item.getTitle()); 
       // Close the navigation drawer 
       drawer.closeDrawers(); 
      } 
     }else 
     { 
      // After logout redirect user to Loing Activity 
      Intent i = new Intent(HomeActivity.this, fragmentClass); 
      // Closing all the Activities 
      i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

      // Add new Flag to start new Activity 
      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

      // Start Login Activity 
      startActivity(i); 

      finish(); 
     }