初。それはイントロの後に戻った場合、ナビゲーションドロワーは、ドキュメントの状態ととして初めて示されProgressDialogクラッシュ私はこの問題について、いくつかのいくつかの記事を読んだが、誰も私の問題を解決していないことを言わなければならないすべての
public class MainActivity extends AppCompatActivity{
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
...
//If first run, an intro is shown
if (!isIntroShown()) {
Intent intent = new Intent(MainActivity.this, IntroWellcomeActivity.class);
startActivity(intent);
setIntroShown(true);
finish();
}
//Navigation drawer set up
drawerLayout.setDrawerListener(this);
setUpToolbar();
setUpNavDrawer();
displayFragment(R.id.navigation_item_1);
navView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override public boolean onNavigationItemSelected(MenuItem menuItem) {
menuItem.setChecked(true);
displayFragment(menuItem.getItemId());
drawerLayout.closeDrawers();
return true;
}
});
:アプリの初回起動時に
は、イントロの活動は、いくつかのデータを要求するために起動されますデフォルトのフラグメントがロードされます。この断片は、例えば、電話番号をイントロに導入された情報を示しています。この断片では、もし私が望むなら、私はこの数字を変えることができます。これを行うと、バックグラウンドジョブが実行されている間にProgress Dialogが表示されます。
しかし、ここで問題が発生します。この最初の実行では、なぜこれが起こっているのかよく分かりませんが、Progressダイアログが表示されると、logCatでこれを示すアプリケーションがクラッシュします。
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.myapp, PID: 31388
android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running?
この後、私は再びアプリケーションを実行します。今回はイントロは表示されず、ナビゲーションドロワも表示されません(最初の実行時にのみ発生します)、電話番号を編集しようとすると、Progress Dialogが表示され、すべて正常に動作します。代わりのgetContext()の)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_profile, container, false);
...
progressDialog = new ProgressDialog(getContext());
私はgetActivityを(使用しようと試みましたが、問題が解決しない:
は、これは私がフラグメントでProgressDialogを開始する方法です。
だから私は、イントロが示されており、断片がロードされた後の最初の実行時に、何かが開始されていない、または私は間違った場所にprogressDialogを開始していていることと思います。知りません。
利用getActivity()ProgressDialogを初期化し、進捗ダイアログを表示しながら、(もし!getActivity()。isFinishing()){progressDialog.show())をしようとします。また、progressDialogが既に表示されているかどうかを確認します。はいの場合は、それを閉じて再初期化します。 – Raghavendra
ProgressDialogコンストラクタでこれを渡すことができます:getActivity()。getApplicationContext() – Vinodh