在onActivityResult中显示吐司

时间:2015-06-28 22:41:52

标签: java android toast onactivityresult

我试图在活动返回结果时显示Toast消息。但是,我正在使用定制的充气吐司。常规吐司工作正常,但我的自定义吐司将无法显示。代码如下。

主要活动的config/bootstrap.php

onCreate()

主要活动的@Override public void onCreate(Bundle savedInstance){ super.onCreate(savedInstance); setContentView(R.layout.activity_login); emailTxt = (TextView)this.findViewById(R.id.email_field); passwordTxt = (TextView)this.findViewById(R.id.password_field); wgmService = ((MainApp)this.getApplication()).wegmannAdapter.create(WegmannService.class); spinner = (ProgressBar)this.findViewById(R.id.progress_bar); spinner.setVisibility(View.GONE); LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.toast, (ViewGroup)findViewById(R.id.toast_layout)); toastText = (TextView)layout.findViewById(R.id.toast_text); toast = new Toast(getApplicationContext()); toast.setGravity(Gravity.BOTTOM, 0, 0); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); fadeIn = AnimationUtils.loadAnimation(this, R.anim.fade_in); fadeOut = AnimationUtils.loadAnimation(this, R.anim.fade_out); }

onActivityResult

有了上述内容,我看不到干杯消息。但是,如果我要用@Override protected void onActivityResult(int requestCode, int resultCode, Intent data){ switch(requestCode) { case SIGNUP_VIEW: if(resultCode == RESULT_OK){ toastText.setText(data.getExtras().getString("message")); toast.show(); } break; } } 替换onActivityResult中的行,则会显示一条消息。我需要能够在这个例子中使用我的自定义吐司。任何帮助或方向赞赏。

2 个答案:

答案 0 :(得分:0)

您的错误非常简单:您更改了文本 textField toastText,不要为要显示的toast添加文本。

此代码应该有效:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
    switch(requestCode) {
        case SIGNUP_VIEW:
            if(resultCode == RESULT_OK){
                toast.setText(data.getExtras().getString("message"));
                toast.show();
            }
            break;
    }
}

答案 1 :(得分:0)

原来问题是我的其他活动中的一行。我正在设置我的额外信息:

Intent intent = new Intent();
            intent.putExtra("message", R.string.messages_signup_success);
            setResult(RESULT_OK, intent);
            finish();

然而,R.string.messages_signup_success返回一个int,当检索到它时会抛出一个非严重警告并继续进行而不显示我的toast但没有崩溃。将代码更改为以下内容可解决问题:

Intent intent = new Intent();
            intent.putExtra("message", getBaseContext().getString(R.string.messages_signup_success));
            setResult(RESULT_OK, intent);
            finish();