在完成我的活动之前稍等一下

时间:2013-05-14 13:13:34

标签: android

在我的活动结束之前等待的最佳方式是什么?

实际上,我使用“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 个答案:

答案 0 :(得分: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 runnable,run()方法中的所有操作位置将在Toast.LENGTH_LONG时间过后执行。