0

私はレガシーコードを扱っています。私の仕事は、非同期タスクの結果を処理することです。

dispatchMessage メソッド内の外部オブジェクトへのアクセスに固執しています。それを達成する手段はありますか、それともシングルトンまたは静的プロパティを使用する必要がありますか?

ここまでで、非同期モードでの実行を担当するクラスを作成しました。

private class BackgroundTask extends AsyncTask<Object, Void, Boolean> 
    { 
        @Override
        protected Boolean doInBackground(Object... params){
            // ...
        }

        @Override
        protected void onPostExecute(Boolean result){
            // ...
        }


    }

OnPostExecute または doInBackground メソッド内で、ハンドラーを使用してメッセージを送信したいので、いくつかの単純なものをプッシュします。

Message m = new Message();
Bundle b = new Bundle();
b.putString("sizeKEY", "size " + _count);
m.setData(b);
_handler.sendMessage(m);

そして、ここで外部オブジェクトにアクセスする必要があります。

new Handler(){
@Override
    public void dispatchMessage(Message msg) {
                super.dispatchMessage(msg);
                // get access to, say, Activity property or method here 
            }
        }

それはどのように行われますか?

4

1 に答える 1

0

を使用<MyOuterClass>.thisして、外側にあるオブジェクトにアクセスできます(内部クラスにいるため)。

外部クラスの名前が「MyActivity」(単なる例) で、そのエクストラにアクセスする場合は、次のようになります。

MyActivity.this.getIntent().getExtras()

http://www.java-forums.org/java-tip/6296-inner-class-accessing-outer-class.htmlを参照してください。

于 2012-04-26T08:43:35.907 に答える