2011-11-09 6 views
2

을 떠나기 전에 호출됩니다 : onPause 나는 다음과 같은 한 현재 활동

dialogwait = ProgressDialog.show(Playlist.this, 
          "Loading...", "Please wait..", true); 

가 나는 ProgressDialog을 만들고 내가 onPause() 그것을 dissmis :

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
       .... 
       populate(); 
       handler = new Handler(); 
     t = new Timer(); 
     t.scheduleAtFixedRate(new TimerTask() { 
      @Override 
      public void run() { 
       runOnUiThread(new Runnable() { 
        public void run() { 
         doReload1(); 
         populate(); 
        } 
       }); 

      } 

     }, 300, 30000); 
} 

private void populate() { 
    if (playlists.length != 0) { 
     MyListView = (ListView) findViewById(R.id.MyListView); 
     for (String item : playlists) { 
      Log.d("DEBUG", "item=" + item); 
     } 

     String[] adapterPlaylists = new String[playlists.length]; 
     for (int i = 0; i < playlists.length; i++) { 
      adapterPlaylists[i] = playlists[i]; 
     } 
     adapter1 = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, adapterPlaylists); 

     MyListView.setAdapter(adapter1); 
     adapter1.notifyDataSetChanged(); 

     MyListView.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> arg0, View v, 
        int position, long id) { 
       dialogwait = ProgressDialog.show(Playlist.this, 
         "Loading...", "Please wait..", true); 
       Intent i = new Intent(getBaseContext(), ViewPlaylist.class); 
       i.putExtra("id", idPlaylist[position]); 
       i.putExtra("timer", timerPlaylist[position]); 
       startActivity(i); 

       finish(); 
      } 
     }); 
    } else 
     System.out.println("playlist null"); 

} 

@Override 
protected void onPause() { 
    super.onPause(); 
    System.out.println("onPause Playlist!!!!!!"); 
    dialogwait.dismiss(); 
    t.cancel(); 
} 

문제는 여기에 있다는 것입니다. 하지만 이 직후에 호출 되려면 먼저 ProgressDialog이 만들어집니다. 어떤 생각을 왜 모든 솔루션 덕분에

+0

중단 점을 사용하고 코드를 단계별로 실행하십시오. onPause에서 적어도 하나는 실제로 호출되고 다른 것은 아닙니다. – Warpzit

+0

메시지를 입력했습니다. – adrian

+0

직후에 progressdialog를 작성한 후에 새로운 활동을 시작한 후에야 새로운 활동이 현재 활동을 중단하기 때문에 자체적으로 표시되지 않을 것이라고 생각됩니다. – Warpzit

답변

1

안드로이드에서 Dialog는 차단하지 않습니다 때문이다? -? 뒤에 실행 스레드 (이 경우에 Activity 특히 당신의 onItemClickListener) 계속 실행됩니다 것을 의미한다.

사용자가 클릭 한 항목이로드되고 있음을 알리는로드 대화 상자를 표시하려는 것처럼 보입니다. 그 대화 상자를 다음 활동 (onClick에서 시작한 대화 상자)으로 이동 한 다음 거기에서 대화 상자를 표시하고 닫는 것이 좋습니다.

0

OnItemClickListenerfinish() (으)로 전화하는 것이 문제 일 수 있다고 생각합니다. 그러면 onPause() 구현이 즉시 대화 상자를 닫을 수있는 항목을 클릭하자마자 현재 활동이 종료됩니다.

아마도이 활동이 아닌 ViewPlaylist 활동이 만들어 질 때 대화 상자를 표시해야 할 수도 있습니다.

0

현재 활동 (대화 또는 다른 활동) 위에있는 모든 것이 해당 활동을 백그라운드 활동으로 지정하므로 onPause가 호출됩니다. 있다면, dialog.dismiss()는 액티비티 'onResume'에서 호출되어야합니다. 구현시 단추를 클릭하면 대화 상자가 표시되므로 활동이 일시 중지되고 닫을 때 호출됩니다. 대화 상자와 관련된 프로세스가 완료된 경우에만 종료를 호출하여 사용자에게 다른 작업을 준비 할 수 있음을 알리고, 다른 경우에는 다른 활동을 시작해야합니다. 대화 상자의 onDismiss 내에서 활동을 시작하십시오. 예 :

AlertDialog alert = new AlertDialog.Builder(this).create(); 
    alert.setOnDismissListener(new OnDismissListener() { 
    @Override 
    public void onDismiss(DialogInterface dialog) { 
     // start the other activity 
    } 
});