0

ええと、実際にはダイアログである必要はありません。別の方法かもしれません...「読み込み中...」であることをユーザーに通知したいだけです

別のタスク内に AsyncTask を拡張するクラスがあります。

onPreExecute 「Loading...」を表示したいのですが、onPostExecute を非表示にしたいのです。

私が考えることができる唯一の方法は、ダイアログを介することです。

問題は、ダイアログがそのコンストラクターに渡されるコンテキストを必要とすることです。このクラスは単なるデータ送信機であるため、アクティビティではありません。

私は何をしますか?

4

3 に答える 3

1

このことから、2 つの解決策があります。1.asynctask をアクティビティの内部クラスとして使用します。

また

2. 以下のようにクラスを作成し、プロジェクト内の任意の場所でコンテキストを使用します。

public class ApplicationContext extends Application {

/** Instance of the current application. */
private static ApplicationContext instance;

/**
 * Constructor.
 */
public ApplicationContext() {
    instance = this;
}

/**
 * Gets the application context.
 * 
 * @return the application context
 */
public static Context getContext() {
    if (instance == null) {
        instance = new ApplicationContext();
    }
    return instance;
}
}

マニフェストで次のように言及しますandroid:name="com.afbb.activitys.ApplicationContext"

ApplicationContext.getContext()ダイアログを表示するために使用するコンテキストを取得します。

于 2013-11-02T11:41:10.873 に答える
0

システムウィンドウを試すことができます

1、getSystemService(Context.WINDOW_SERVICE); で WindowManager を取得します。

2、ダイアログ ビューを拡張する

3、WindowManager.LayoutParams を作成します。フラグに注意してください。

4、WindowManager.addView(view, layoutparams); でビューを追加します。

5、ダイアログを閉じると、WindowManager.removeView(view);

WindowManager

于 2013-11-02T11:51:39.583 に答える