1

15画面のアプリケーションを1つ開発しました。ここで、15の画面すべてにカスタムトーストメッセージを表示したいと思います。そうするために、私は1つのレイアウトを膨らませました。ただし、1つの画面でのみ機能します。Toastそこで、すべての画面にカスタムを表示する単一のメソッドを作成しました。トーストメッセージを表示したいときはいつでも、そのメソッドを呼び出すだけです。しかし、私は得java.lang.NullPointerExceptionました。これを解決する方法は?以下は私のコードです、

public static void showToastMessage(String message){

               LayoutInflater inflater = ((Activity) context).getLayoutInflater();

                View layout = inflater.inflate(R.layout.custom_toast,
                  (ViewGroup) ((Activity) context).findViewById(R.id.customToast));
            // set a message
                TextView text = (TextView) layout.findViewById(R.id.text);
                text.setText(message);

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

ログは

java.lang.NullPointerException

    at com.guayama.utilities.CommonMethods.showToastMessage(CommonMethods.java:474)

    at android.view.View.performClick(View.java:3511)

    at android.view.View$PerformClick.run(View.java:14105)

    at android.os.Handler.handleCallback(Handler.java:605)

    at android.os.Handler.dispatchMessage(Handler.java:92)

    at android.os.Looper.loop(Looper.java:137)

    at android.app.ActivityThread.main(ActivityThread.java:4424)

    at java.lang.reflect.Method.invokeNative(Native Method)
4

5 に答える 5

2

渡しContext、それを次のように使用しますshowToastMessage(String message,Context context)

したがって:

public static void showToastMessage(String message){
   LayoutInflater inflater = ((Activity) context).getLayoutInflater();
   View layout = inflater.inflate(R.layout.custom_toast,
   (ViewGroup) ((Activity) context).findViewById(R.id.customToast));
   // set a message
   TextView text = (TextView) layout.findViewById(R.id.text);
   text.setText(message);

   // Toast...
   Toast toast = new Toast(context);
   toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
   toast.setDuration(Toast.LENGTH_LONG);
   toast.setView(layout);
   toast.show();
}
于 2012-07-05T07:53:52.467 に答える