私はアプリで実装したNavigationDrawerに問題があります。私が行ったことは、NavigationDrawerアクティビティを他のアクティビティに拡張することで、正常に動作します。私はそれを行うにためつもり何ナビゲーションドロワーは選択と移行の問題を覚えていません
は引き出しの中のリンクをクリックする上で、新たな活動を開くことですが、私が起こることを望んでいない2つの処理が行われます
- ナビゲーションドロワーに開始しますクローズすると、新しいアクティビティが開始され、画面上のアクティビティが背景に崩壊し、新しいアクティビティが下からスライドするように、これは終了します。新しいアクティビティの情報が表示される前に、引き出しが閉じて画面が点滅するように、正しく転送するにはどうすればよいですか?
- ナビゲーション・ドロワーでの選択は正しくありません。 「ニュースフィード」ページで「ハイスコア」を選択すると、アクティビティは切り替わりますが、選択は「ニュースフィード」にとどまります。ページ切り替えで選択をどのように切り替えることができますか?
navigationDrawerActivity.java
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
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.MenuItem;
import android.widget.FrameLayout;
public class navigationDrawerActivity extends AppCompatActivity implements
NavigationView.OnNavigationItemSelectedListener {
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mToggle;
protected DrawerLayout fullLayout;
protected FrameLayout actContent;
private Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void setContentView(final int layoutResID) {
fullLayout = (DrawerLayout) getLayoutInflater().inflate(R.layout.activity_navigation_drawer, null);
actContent = (FrameLayout) fullLayout.findViewById(R.id.act_content);
// This code combines this activity along with others for the NavigationDrawer to be global
getLayoutInflater().inflate(layoutResID, actContent, true);
super.setContentView(fullLayout);
//NavigationDrawer settings
mToolbar = (Toolbar) findViewById(R.id.nav_action);
setSupportActionBar(mToolbar);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
mDrawerLayout.addDrawerListener(mToggle);
mToggle.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setNavigationViewListener();
}
//Enables the NavDrawer icon to work
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
//Handles navigation view item clicks
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.nav_newsFeed: {
Intent intent = new Intent (this, newsfeedActivity.class);
startActivity(intent);
mDrawerLayout.closeDrawer(GravityCompat.START);
break;
}
case R.id.nav_hiScores: {
Intent intent = new Intent (this, hiscoresActivity.class);
startActivity(intent);
mDrawerLayout.closeDrawer(GravityCompat.START);
break;
}
}
//close navigation drawer
mDrawerLayout.closeDrawer(GravityCompat.START);
return true;
}
private void setNavigationViewListener() {
NavigationView navigationView = (NavigationView) findViewById(R.id.navigationView);
navigationView.setNavigationItemSelectedListener(this);
}
}
EDIT:
だから私は、コードを少し周りに微調整した後、問題を解決するために管理し、基本的に私は私の活動のそれぞれにonResumeを追加しました。そのonResume内で、ナビゲーションビューで選択された項目を設定し、overridePendingTransitionを使用して、移行問題を止めます。ハイスコアを表示するアクティビティで
返信用のおかげで、私はあなたが示唆したものを試してみたとアプリが起動時にクラッシュした... onNavigationItemSelectedのケースの下にそれを入れてみましたとアプリが..任意の提案をリンクをタップする上で墜落しましたか? 断片化部分については、私はそれを読んだが使用しなかったが、後で試してみるかもしれない。 – bayobayo
@bayobayo logCatとは何か? – Valentun