2013-05-14 66 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

相关问题