在开始新的Intent活动后使用Toast

时间:2011-06-05 17:45:43

标签: android android-intent

我想在使用新的Intent活动后在Toast中查看一些文本。

这就是我所拥有的:

Intent i = new Intent(this, PrivateWallet.class);
startActivity(i);
this.finish();
Toast.makeText(getApplicationContext(), "You have € " + inputTransacVal.getText().toString() + " less.",Toast.LENGTH_SHORT).show();

问题是,在意图开始之前,Toast首先显示一些文本。

非常感谢任何帮助。 :)

编辑:

以下是工作代码:

Bundle bundle = new Bundle(); bundle.putString("value", "You have € " + inputTransacVal.getText().toString() + " more."); 
startActivity(new Intent(this, PrivateWallet.class).putExtras(bundle)); 
this.finish();

此代码旨在验证:

if(this.getIntent().getExtras() != null){
    Toast.makeText(this, this.getIntent().getExtras().getString("value"),Toast.LENGTH_LONG).show();
}

4 个答案:

答案 0 :(得分:4)

您应该明确地将Toast代码放入PrivateWallet活动的onCreate中。

应使用Bundle将欧元金额传递给您的活动:

Bundle bundle = new Bundle();
bundle.putString("value", inputTransacVal.getText());
startActivity(new Intent(this, PrivateWallet.class).putExtras(bundle));

然后在您的PrivateWallet活动中:

Toast.makeText(this, "You have € "+this.getIntent().getExtras().getString("value")+" less",Toast.LENGTH_LONG).show();

答案 1 :(得分:1)

意图需要一段时间才能启动。你的吐司或多或少地立刻执行。因此,您的toast应该在您的PrivateWallet类中,以便它在Activity启动后执行。

但你确实想要一种方法来保持你在这堂课上的祝酒,所以这里有一个:

Hackish解决方案(可能会让你遇到竞争条件问题......仍然......)这就是你要求的 - 使用计时器延迟你的祝酒......

public void startNewActivity(){
    Intent i = new Intent(SplashScreen.this, YOURINTENTHERE);
    startActivity(i);        

    Timer t = new Timer();
    t.schedule(new SplashDone(), 1500);
}

public class SplashDone extends TimerTask {

    @Override
    public void run() {
                 //TOAST GOES HERE
    }
}

更好的方法可能是在PrivateWallet类中进行祝酒。 如果您需要主类中的数据,那么您可以在意图中将其作为额外内容发送。

Intent i = new Intent(getApplicationContext(), YOURACTIVITY);

Bundle bundle = new Bundle();
bundle.putString("value", inputTransacVal.getText());

i.putExtras(bundle);

startActivity(i);

答案 2 :(得分:1)

为什么不直接将inputTranscacVal.getText()发送到您的PrivateWallet活动,并在启动时显示Toast?

答案 3 :(得分:1)

您应该将金额值添加到意图中,并在显示PrivateWallet时显示它们。 finish()没有立即完成活动,所以你可以在其他活动开始之前看到吐司。