0

私が苦労している奇妙な問題があります。

これは非常に基本的なものです。コードToastをクリックしたときにメッセージを表示しようとしています。imageView

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_password);

    lock = (ImageView) findViewById(R.id.lock);
    lock.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            Toast.makeText(getBaseContext(), "clicked", Toast.LENGTH_SHORT).show();
        }
    });
}

しかし、何らかの理由で、「」メッセージを送信したかのように、トースト メッセージが空白になります。トースト行を「oncreate」に移動すると、通常どおり表示されますが、何が問題なのかわかりません

4

3 に答える 3

0

次の行を置き換えます。

Toast.makeText(getBaseContext(), "clicked", Toast.LENGTH_SHORT).show();

Toast.makeText(YourActivityClass.this, "clicked", Toast.LENGTH_SHORT).show();

コンテキストを正しく取得します。

Androidへの受け入れられた回答を参照してください: 詳細については、これの代わりに getBaseContext() を使用する必要がある理由

于 2014-05-04T10:38:19.410 に答える
0

最初にコンテキストを取得し、それを使用してトーストを表示します。

private static Context mContext;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mContext = getApplicationContext();

    setContentView(R.layout.activity_password);

    lock = (ImageView) findViewById(R.id.lock);
    lock.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(mContext, "clicked", Toast.LENGTH_SHORT).show();
        }
    });
}
于 2014-05-04T10:40:17.957 に答える
0

この静的メソッドを使用すると、毎回メソッドを再作成する代わりに簡単に呼び出すことができます。これを Class.java に作成します (例)

public static void showToast(Context context, String text) {
    Toast.makeText(context, text, Toast.LENGTH_LONG).show();
}

そして、それを使用して呼び出します

Class.showToast(getActivity().getApplicationContext(), "text");
于 2014-05-04T10:41:15.980 に答える