1

これは悪い習慣ですか?なぜそうなのか? したがって、 onCreateの直後にこれを追加するすべてのアクティビティで...

mContext = this;

コンテキスト必要な他のすべての場合に使用しますか? 例えば

Toast.makeText(mContext, mContext.getString(R.string.someString), Toast.LENGTH_LONG);

編集:私がこのようなものを持っているとどうなりますか...コンテキストをどのように渡す必要がありますか? これは適用できないためです ( View.OnClickListener() のため)

someButton = (Button) findViewById(R.id.someButton);
someButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(mContext, mContext.getString(R.string.warning), Toast.LENGTH_LONG).show();
    }
});
4

2 に答える 2

9

これは悪い習慣ですか?なぜそうなのか?

はい、それは悪い習慣です。コードの無駄です。thisは よりも短くmContext、データ メンバーを設定するための余分なコード行があります。

常に を使用するというダミアン氏の提案には同意しませんgetApplication()getApplication()オブジェクトが特に必要な場合に使用しApplicationます。Applicationを作成するためのオブジェクトは必要ありませんし、必要もありませんToast。あなたのActivityはそこで使用するのに完全に適しContextています。このApplicationオブジェクトは多くの場所で機能しません。特に、UI に関連するものを扱う場合はそうです。

于 2011-02-26T18:15:40.190 に答える
0

代わりに使用できますthis。OnClickListener や他のサブクラスでも、次のActivityName.thisように使用します。

someButton = (Button) findViewById(R.id.someButton);
someButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(ActivityName.this, ActivityName.this.getString(R.string.warning), Toast.LENGTH_LONG).show();
    }
});
于 2015-11-19T19:24:13.610 に答える