1

次のようなカスタムトーストビューを作成したい

public class SMSToast extends Activity {

    public void showToast(Context context, String message) {
        LayoutInflater inflater = getLayoutInflater();
        View layout = inflater.inflate(R.layout.toast_sms, (ViewGroup)findViewById(R.id.toast_sms_root));

        TextView text = (TextView) layout.findViewById(R.id.toast_sms_text);
        text.setText(message);

        Toast toast = new Toast(context);
        toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setView(layout);
        toast.show();
    }
}

およびonReceiveメソッドのBroadcastReceiverで

SMSToast toast = new SMSToast();
                        toast.showToast(context, 
                                        "Received SMS from: " + msg_from + 
                                        " Content: " + msgBody);

ただし、コードが呼び出されてもメッセージは表示されません。Toastを使用すると、テキストが表示されます。私は何を間違っていますか?

4

4 に答える 4

4
 public class SMSToast{

    public void showToast(Context context, String message) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       View layout = inflater.inflate(R.layout.toast_sms, null);
       TextView text = (TextView) layout.findViewById(R.id.toast_sms_text);
       text.setText(message);
       Toast toast = new Toast(context);
       toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
       toast.setDuration(Toast.LENGTH_LONG);
       toast.setView(layout);
       toast.show();
   }
}

アクティビティからSMSToastクラスを拡張しないでください。単純なJavaクラスにします。

SMSToast toast = new SMSToast();                          
toast.showToast(context,  "Received SMS from: " + msg_from + 
" Content: " + msgBody);   
于 2012-08-13T11:36:46.290 に答える
2

この2行を変更してください

 View layout = inflater.inflate(R.layout.toast_sms, null);
and
 Toast toast = new Toast(getApplicationContext());
于 2012-08-13T11:26:46.080 に答える
1

フォームのドキュメントの例を見ましたか?
そうではないようです。
アクティビティを延長する必要はありません!setView APIを使用して、インフレータと標準のToastを使用するだけです。

于 2012-08-13T11:52:10.527 に答える
0

このコードを使用します:

LayoutInflater mInflater=LayoutInflater.from(context);

View view=mInflater.inflate(R.layout.your_layout_file,null);
Toast toast=new Toast(context);
toast.setView(view);
toast.setDuration(TOAST.LENGTH_LONG);
toast.show();
于 2012-11-22T13:45:30.023 に答える