簡體   English   中英

在開始一個新的 Intent 活動后使用 Toast

[英]Using Toast after starting a new Intent activity

在使用新的 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();
}

您應該明確地將 Toast 代碼放在 PrivateWallet 活動的 onCreate 中。

歐元金額應通過捆綁傳遞給您的活動:

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();

Intent 需要一點時間才能啟動。 您的吐司或多或少會立即執行。 因此,您的 toast 確實應該在您的 PrivateWallet class 中,以便在 Activity 啟動后執行。

但是你確實要求一種方法來保持你的吐司在這個 class 所以這里是一個:

駭人聽聞的解決方案(可能會給您帶來比賽條件的問題......仍然......)這是你所要求的 - 使用計時器延遲你的吐司......

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 class 中祝酒。 如果您需要來自主要 class 的數據,那么您可以將其作為您的意圖中的額外數據發送。

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

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

i.putExtras(bundle);

startActivity(i);

為什么不直接將inputTranscacVal.getText()發送到您的 PrivateWallet 活動,並在啟動時顯示 Toast?

您應該將貨幣價值添加到意圖中,並在顯示 PrivateWallet 時顯示它們。 finish() 不會立即完成活動,這就是為什么您在其他活動開始之前看到 toast 的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM