0

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

实际上,我使用“startActivityForResult”从 MainActivity 启动了一个名为 MasterNumber 的新活动。MasterNumber 发送 SMS 并显示 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);
    }
});
4

1 回答 1

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 时间过去后执行。

于 2013-05-14T13:26:45.870 回答