2013-05-14 41 views
0

在我的活動完成之前等待的最佳方式是什麼?在完成我的活動之前稍等一下

實際上,我使用「startActivityForResult」從MainActivity啓動了一個名爲MasterNumber的新活動。 MasterNumber發送短信並顯示Toast說「SMS Sent」,但MasterNumber活動已關閉得如此之快以致Toast在MainActivity中顯示。

這裏是MainActivity的內容:

//Lorsqu'on clique sur le bouton "Send" 
Button button1 = (Button) findViewById(R.id.masterbutton1); 
button1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     try { 
      SmsManager smsManager = SmsManager.getDefault(); 
      smsManager.sendTextMessage(automatikRN, null, "#00#", null, null); 
      Toast.makeText(getApplicationContext(), "SMS Sent!", 
      Toast.LENGTH_LONG).show(); 
     } 
     catch (Exception e) { 
      Toast.makeText(getApplicationContext(), 
       "SMS failed, please try again later!", 
       Toast.LENGTH_LONG).show(); 
       e.printStackTrace(); 
     } 
     finish(); 
    } 
}); 

,這裏是MasterNumber(活動)的內容

//Lorsqu'on clique sur le bouton Add Master Number 
Button button2 = (Button) findViewById(R.id.mainbutton2); 
button2.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //On va appeler l'activité MasterNumber (#RECIPIENTNUMBERAUTOMATIK-1) 
     Intent setMasterNumber = new Intent(MainActivity.this, MasterNumber.class); 
     setMasterNumber.putExtra("MN", recipientNumber); //on lui fournit le n° du dest. afin qu'il soit saisit automatiquement 
     startActivityForResult(setMasterNumber, 1); 
    } 
}); 
+1

將所有必需的代碼放入AsyncTask的doInBackground()方法中,並在不爲空時將finish()放入onpostexecute方法 – 2013-05-14 13:21:51

+0

@sunil您是否有任何示例?或者你能爲我快速做到嗎?因爲我是Android新手,我不知道你在說什麼.. – d3vpasha 2013-05-14 13:40:39

回答

0

試試這個:

//Lorsqu'on clique sur le bouton "Send" 
     Button button1 = (Button) findViewById(R.id.masterbutton1); 
     button1.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       try 
       { 
        SmsManager smsManager = SmsManager.getDefault(); 
        smsManager.sendTextMessage(automatikRN, null, "#00#", null, null); 
        Toast.makeText(getApplicationContext(), "SMS Sent!", 
           Toast.LENGTH_LONG).show(); 
       } 
       catch (Exception e) 
       { 
        Toast.makeText(getApplicationContext(), 
         "SMS failed, please try again later!", 
         Toast.LENGTH_LONG).show(); 
        e.printStackTrace(); 
       } 
       new Handler().postDelayed(new Runnable() { 

     @Override 
     public void run() { 
      finish(); 
     } 
     }, Toast.LENGTH_LONG); 
      } 
     }); 

通過使用postDelayed可運行,則在Toast.LENGTH_LONG時間過後,將執行run()方法內的所有操作位置。

+0

謝謝我的朋友,但我沒有看到任何區別..也許我可以添加更多的時間來等待? – d3vpasha 2013-05-14 13:46:14

+0

使用Toast.LENGTH_LONG不起作用,因爲如果您實際查看Toast類LENGTH_LONG = 1,則它只會等待1ms。 – jesobremonte 2014-03-14 09:09:37

相關問題