Show Complex Toast From BroadcastReceiver
android, dalvik, toast, user-interface
Solution
You can use LayoutInflater.from(context) to get your LayoutInflater. Like this:
LayoutInflater mInflater = LayoutInflater.from(context);
View myView = mInflater.inflate(R.layout.customToast, null);
TextView sender = (TextView) myView.findViewById(R.id.sender);
TextView message = (TextView) myView.findViewById(R.id.message);
Problem
I wonder if someone can help me. I'm trying to display a toast element when an SMS is received. This toast should contain a layout which has an image (SMS Icon) and 2 textviews (sender, message) If I call the following method from an activity, it works as expected... ``` public void showToast(Context context, String name, 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.toastsms_text); text.setText(message); Toast toast = new Toast(getApplicationContext()); toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); toast.show(); } ``` However, if I try to call the same code in the same way from my SMSReceiver, I get: ``` The method getLayoutInflater() is undefined for the type SmsReceiver The method findViewById(int) is undefined for the type SmsReceiver The method getApplicationContext() is undefined for the type SmsReceiver ``` Can someone please advise how I can do tihs from an intent. I assume the issue is somehow related to cross-threading however, I'm unsure how to proceed. I've seen a couple of examples online but they seem to either use deprecated code or only display simple text Can someone please point me in the correct direction Many thanks