2016-12-08 1 views
-1

먼저이 문제에 대한 몇 가지 게시물을 읽었지만 아무도 내 문제를 해결하지 못했다고해야합니다. 이 인트로 후 반환하면 내비게이션 창은 문서 상태와 같은 처음으로 표시됩니다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; 
      } 
     }); 

: 응용 프로그램의 첫 번째 실행에

는 인트로 활동은 일부 데이터를 요청하는 시작됩니다 기본 조각이로드됩니다.

이 부분은 소개에 소개 된 정보 (예 : 전화 번호)를 보여줍니다. 이 부분에서 원하는 경우이 번호를 변경할 수 있습니다. 이 작업을 수행하면 배경 작업이 완료되는 동안 진행 대화 상자가 표시됩니다.

하지만 여기에 문제가 있습니다. 이 첫 번째 실행에서는 왜 이런 일이 발생하는지 잘 이해하지 못하지만 진행 대화 상자가 표시 될 때 응용 프로그램이 충돌하여 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? 

이 후 앱을 다시 실행합니다. 이번에는 인트로가 표시되지 않고 탐색 창 (첫 번째 실행에서만 발생 함)이 표시되지 않으며 다시 전화 번호를 수정하려고하면 진행 대화 상자가 표시되고 모든 것이 올바르게 작동합니다. 대신는 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을 (사용 tryed했지만 문제가 해결되지 않습니다

이 나는 ​​조각에해서 ProgressDialog를 시작하는 방법입니다.

인트로가 표시된 후 조각이로드되거나 무언가가 시작되지 않았거나 잘못된 위치에서 progressDialog를 시작한 것 같습니다. 나는 모른다.

+0

사용 getActivity()해서 ProgressDialog를 초기화한다면, 시도 할 (! getActivity(). isFinishing()) {progressDialog.show()) 진행 대화 상자를 보여 주면서. 또한 progressDialog가 이미 표시되는지 확인합니다. 예 (Yes)를 닫고 다시 초기화하십시오. – Raghavendra

+0

이것을 ProgressDialog 생성자에서 전달할 수 있습니까? getActivity(). getApplicationContext() – Vinodh

답변

1

대화 상자를 표시하기 전에 finish()이라고하는 활동 내에서 조각을 생성한다고 생각합니다. if (!isIntroShown()) 문에 finish()으로 전화하지 마십시오.

소개/자습서에서 처음에 죽이지 않고 동일한 생성 된 활동으로 되돌릴 수 있습니다.

+0

고마워요! 이것이 효과가 있습니다! 나는 그것이 그와 비슷한 것이어야한다는 것을 새삼 느낀다. – masmic

0

더 이상 존재하지 않는 컨텍스트에 대한 대화 상자가 나타나면 ProgressDialog을 초기화 할 때 활동이 실행 중인지 확인하십시오.

if(!((Activity) getActivity()).isFinishing()){ 
    progressDialog = new ProgressDialog(getActivity()); 
} 
+0

다른 게시물에서이 내용을 보았지만 필요한 것은 아닙니다. ProgressDialog는 어쨌든 시작되어야합니다. – masmic

+0

활성 'Context'가 없을 때 어떻게 진행 대화 상자를 시작할 수 있습니까? –