[UPDATE]ハンドルホームボタンのクリックイベント
次のように私はactivity_main.xml
とMainActivity.class
を変更した:Creating a Navigation Drawer Androidデベロッパーガイドから、今では完璧に動作します。
私はちょうどFragments
異なる設定するFrameLayout
が含まれていますが、私はそのクリックを扱うことができないんだけどこれは、私のMainActivity
ためDrawerLayout
を使用しています。それは動作し、メニューは開いたり閉じたりしますが、どのように管理するのか分かりません。これは私のコードです:
toolbar.xml
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"/>
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:id="@+id/drawer_layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:openDrawer="start">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/ll_main_layout"
android:orientation="vertical">
<include layout="@layout/toolbar"
android:id="@+id/toolbar"/>
<FrameLayout
android:id="@+id/main_frameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/lateral_menu_header" />
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lateral_menu_listView"
android:layout_marginTop="16dp"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"/>
</LinearLayout>
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
MainActivity.class
public class MainActivity extends AppCompatActivity
implements ListView.OnItemClickListener {
private static final String LOG_TAG = MainActivity.class.getSimpleName();
private static final String CURRENT_FRAGMENT = "mCurrentFragment";
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
private ListView mDrawerList;
private ArrayList<LateralMenuItem> lateralMenuItems;
private Toolbar mToolbar;
public ActionBar mActionBar;
private FragmentManager mFragmentManager;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initToolbar();
initLateralMenu();
mFragmentManager = getSupportFragmentManager();
}
private void initLateralMenu() {
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
if (mDrawerLayout != null) {
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, 0, 0);
mDrawerToggle.syncState();
mDrawerLayout.addDrawerListener(mDrawerToggle);
mDrawerList = (ListView) findViewById(R.id.lateral_menu_listView);
if (mDrawerList != null) {
lateralMenuItems = initLateralMenuList();
LateralMenuListAdapter lateralMenuListAdapter = new LateralMenuListAdapter(MainActivity.this, lateralMenuItems);
mDrawerList.setAdapter(lateralMenuListAdapter);
mDrawerList.setOnItemClickListener(this);
}
}
}
private void initToolbar() {
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mActionBar = getSupportActionBar();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(mDrawerToggle.onOptionsItemSelected(item)) {
// THIS DOESN'T WORK, I'VE DEBUGGED AND IS UNREACHABLE
}
return super.onOptionsItemSelected(item);
}
}
事はonOptionesItemSelected(MenuItem item)
が機能していないということです。また、mDrawerToggle.setToolbarNavigationClickListener(...)
,mToolbar.setOnMenuItemClickListener(...)
、mToolbar.setNavigationOnClickListener()
を設定しようとしましたが、いずれも機能しませんでした。
私の目的は、私がどちらかにいるときに処理することです。Fragment
は、ホームボタンを上に設定し、onBackPressed()
を上書きすることができます。
DrawerLayout
を使用するとロジックが異なる場合がありますが、何か不足していますか?
これは動作しません。私はスイッチポイントでデバッグしましたが、そこでは停止しません。 –