2014-05-10 2 views
0

방금 ​​탐색기 예제를 developer.android.com에서 복사했습니다. 서랍이 작동하고 그것으로 활동을 변경할 수는 있지만 문제는 내 활동의 단편을 볼 수 없다는 것입니다. 내 문제는 무엇입니까?탐색 서랍에 기본 조각이 표시되지 않습니다.

Activity.java :

public class Guide extends ActionBarActivity { 

private String[] drawerListViewItems; 
private DrawerLayout drawerLayout; 
private ListView drawerListView; 
private ActionBarDrawerToggle actionBarDrawerToggle; 

boolean isPlayersOpen = false; 
boolean isMatchOpen = false; 
boolean isTournamentOpen = false; 

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

    // get list items from strings.xml 
    drawerListViewItems = getResources().getStringArray(R.array.activity_list); 
    // get ListView defined in activity_main.xml 
    drawerListView = (ListView) findViewById(R.id.left_drawer); 

    // Set the adapter for the list view 
    drawerListView.setAdapter(new ArrayAdapter<String>(this, 
      R.layout.drawer_listview_item, drawerListViewItems)); 

    // 2. App Icon 
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

    // 2.1 create ActionBarDrawerToggle 
    actionBarDrawerToggle = new ActionBarDrawerToggle(
      this,     /* host Activity */ 
      drawerLayout,   /* DrawerLayout object */ 
      R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */ 
      R.string.drawer_open, /* "open drawer" description */ 
      R.string.drawer_close /* "close drawer" description */ 
      ); 

    // 2.2 Set actionBarDrawerToggle as the DrawerListener 
    drawerLayout.setDrawerListener(actionBarDrawerToggle); 

    // 2.3 enable and show "up" arrow 
    getActionBar().setDisplayHomeAsUpEnabled(true); 

    // just styling option 
    drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 

    drawerListView.setOnItemClickListener(new DrawerItemClickListener()); 
} 

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    // Sync the toggle state after onRestoreInstanceState has occurred. 
    actionBarDrawerToggle.syncState(); 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    actionBarDrawerToggle.onConfigurationChanged(newConfig); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.guide, menu); 
    return true; 
} 

public void extendPlayer(View view){ 

    ImageView extendPlayer = (ImageView)findViewById(R.id.players1); 
    ImageView collapsePlayer = (ImageView)findViewById(R.id.players2); 
    TextView players_text = (TextView)findViewById(R.id.players_guide_text); 

    if(isPlayersOpen){ 

     extendPlayer.setVisibility(View.VISIBLE); 
     collapsePlayer.setVisibility(View.GONE); 
     players_text.setVisibility(View.GONE); 
     isPlayersOpen = false; 

    } else { 

     extendPlayer.setVisibility(View.GONE); 
     collapsePlayer.setVisibility(View.VISIBLE); 
     players_text.setVisibility(View.VISIBLE); 
     isPlayersOpen = true; 

    } 

} 

public void extendMatch(View view){ 

    ImageView extendMatch = (ImageView)findViewById(R.id.match1); 
    ImageView collapseMatch = (ImageView)findViewById(R.id.match2); 
    TextView match_text = (TextView)findViewById(R.id.match_guide_text); 

    if(isMatchOpen){ 

     extendMatch.setVisibility(View.VISIBLE); 
     collapseMatch.setVisibility(View.GONE); 
     match_text.setVisibility(View.GONE); 
     isMatchOpen = false; 

    } else { 

     extendMatch.setVisibility(View.GONE); 
     collapseMatch.setVisibility(View.VISIBLE); 
     match_text.setVisibility(View.VISIBLE); 
     isMatchOpen = true; 

    } 

} 

public void extendTournament(View view){ 

    ImageView extendTournament = (ImageView)findViewById(R.id.tournament1); 
    ImageView collapseTournament = (ImageView)findViewById(R.id.tournament2); 
    TextView tournament_text = (TextView)findViewById(R.id.tournament_guide_text); 

    if(isTournamentOpen){ 

     extendTournament.setVisibility(View.VISIBLE); 
     collapseTournament.setVisibility(View.GONE); 
     tournament_text.setVisibility(View.GONE); 
     isTournamentOpen = false; 

    } else { 

     extendTournament.setVisibility(View.GONE); 
     collapseTournament.setVisibility(View.VISIBLE); 
     tournament_text.setVisibility(View.VISIBLE); 
     isTournamentOpen = true; 

    } 

} 

@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 (actionBarDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    // Handle your other action bar items... 

    return super.onOptionsItemSelected(item); 
} 

private class DrawerItemClickListener implements ListView.OnItemClickListener { 
    @Override 
    public void onItemClick(AdapterView parent, View view, int position, long id) { 
     drawerLayout.closeDrawer(drawerListView); 

     if(position == 0){ 

      Intent intent = new Intent(Guide.this, Players.class); 
      startActivity(intent); 

     } 

     if(position == 1){ 

      Toast.makeText(Guide.this, ((TextView)view).getText(), Toast.LENGTH_SHORT).show(); 

     } 

     if(position == 2){ 

      Intent intent = new Intent(Guide.this, Tournaments.class); 
      startActivity(intent); 

     } 

     if(position == 3){ 



     } 

     if(position == 4){ 

      Intent intent = new Intent(Guide.this, Info.class); 
      startActivity(intent); 

     } 

    } 
} 

/** 
* A placeholder fragment containing a simple view. 
*/ 
public static class PlaceholderFragment extends Fragment { 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_guide, 
       container, false); 
     return rootView; 
    } 
} 

} 

ExtendPlayer, ExtendMatch 및 ExtendTournament 내 개인적인 방법이 있습니다 다음은 내 코드입니다.

Activity.xml :

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<!-- The main content view --> 
<FrameLayout 
    android:id="@+id/content_frame" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 
<!-- The navigation drawer --> 
<ListView android:id="@+id/left_drawer" 
    android:layout_width="240dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:choiceMode="singleChoice" 
    android:divider="@android:color/transparent" 
    android:dividerHeight="0dp" 
    android:background="#ddd"/> 

나의 조각은

감사 fragment_guide.xml이라고합니다.

답변

0

우선 NavigationDrawer List 항목을 선택하면 새로운 활동을 시작하지 않는 것이 좋습니다. 해야 할 일은 FrameLayout의 기존 조각을 contentframe으로 대체하는 것입니다. 이렇게하면 나중에 애플리케이션을 나중에 태블릿으로 쉽게 확장 할 수 있다는 이점이 있습니다.

조각화에 대한 귀하의 질문에 대해서는 FrameLayout액티비티이 없습니다. 이 FrameLayout 안에 조각을 인스턴스화하려고합니다. NavigationDrawer List에서 옵션을 선택한 후 FrameLayout의 조각을 해당 조각으로 바꿉니다.

FragmentTransaction을 사용하십시오.

+0

우선, 귀하의 도움에 감사드립니다! 나는 당신이 말하는 것을합니다. 그래서 조각이 바뀌 었습니다. 단 하나의 단편에서 버튼을 누를 때, 그 방법이 활동에 있고 단편 만 변경하기 때문에 NoSuchMethodException을 수신합니다. 나는 무엇을해야합니까? MainActivity에 모든 메서드를 넣어야합니까? – BlueMango

+0

조각에 단추가 있고 단추 클릭에 해당하는 메서드를 조각에 고유 한 내용으로 사용하려면 조각을 유지하는 것이 좋습니다. [fragment] (https://developer.android.com/guide/components/fragments.html) 개발자 페이지를 다시 한 번 제안 해 보겠습니다. 또한,이 [vogella 튜토리얼] (http://www.vogella.com/tutorials/AndroidFragments/article.html)도 도움이 될 수 있습니다. –

관련 문제