1

すべてのタブをホストするクラス: TabsPagerFragmentActivity があります。

次に、別のクラスがあります。 AsyncTask を拡張する内部クラスを持つ ShopsFragment です。

TabsPagerFragmentActivity からこの内部クラスの .execute メソッドを呼び出そうとしていますが、

 No enclosing instance of the type is accessible error.

この内部クラスの実行を TabsPagerFragmentActivity から呼び出す方法はありますか? 基本的に、ユーザーがこのフラグメントを離れるとすぐに画像を変更しようとしています。

コード:

public class AlternateImageView extends AsyncTask<String,Integer,Void>{

        @Override
        protected Void doInBackground(String... params) {

            return null;
        }

        @Override 
        protected void onProgressUpdate(Integer... progress) {

        }

        @Override
        protected void onPostExecute(Void v) {
                       //Do something 
                }
         }

ありがとう

4

4 に答える 4

1

このようなもの?

AlternateImageView alternateImageView = new TabsPagerFragmentActivity().new AlternateImageView();
alternateImageView.execute();

私はこれについて良い考えか悪い考えかを判断するつもりはないことを付け加えたいと思います。

于 2012-07-19T14:09:20.480 に答える
1

これは、内部クラスを宣言する方法です。

public class AlternateImageView extends AsyncTask<String,Integer,Void>

別のクラス ファイルからこのクラスを使用するには、次のように static という単語を追加する必要があります。

public static class AlternateImageView extends AsyncTask<String,Integer,Void>

次に、次のようにクラスを使用できます。

AlternateImageView task = new TabsPagerFragmentActivity.AlternateImageView();
task.execute();
于 2012-07-19T14:22:42.307 に答える
0

AsyncTaskを静的クラスとして宣言します。静的内部クラスを使用すると、クラスはパッケージの最上位にある他のクラスと同じ可視性で扱われますが、内部クラスとして使用することで組織的なメリットが得られます。例えば:

Class1
Class2
Class3
    >Inner1
Class4

Inner1を呼び出すには、を行う必要がありますnew Class3().new Inner1()。このように静的にすると:

Class1
Class2
Class3
    >static Inner1
Class4

次に、パッケージ内の他のクラスと同じように作成できます。new Inner1()

于 2012-07-19T14:29:00.917 に答える