0

マンズ、私はここで約2時間、非常に単純に見えますが、オブジェクトの数を返すことはありません。

私はWhitコードを説明します:

DownloadFileAsyncTask.java (私の非同期タスクです)

OnPostExecute で私はこれを作ります:

if(customAdapter != null){
    Log.i("solteiroApp","object count is "+customAdapter.getCount());
    ResultActivity.rec_count  = customAdapter.getCount(); // HERE I PASS COUNT
}

結果アクティビティ.java

public class ResultActivity extends Activity {

    public static int rec_count;
...

問題は次のとおりです。ResultActivity.rec_count常にonCreate0 を返すと、以前に表示したようにログを作成します。

Log.i("solteiroApp","object count is "+customAdapter.getCount());

これにより、カウントが正しく返されます。

これはわかりません。誰かがこのカウントを取得するための提案を持っている場合は、私に言ってください。私はここでこのカウントを返してアクティビティに表示しようとしますが、実行時に値を返すものは何もありません。もう一度使用すると、AsyncTask が返されます以前の値、誰か助けてください。

4

3 に答える 3

0

やろうとしていることはできません。Android OS は、実行するコンテキストを (再) 作成するときに、静的クラスとその静的変数を破棄して再作成します。また、シングルトン クラスを使用して 1 つのアクティビティからデータを保存することはできないことも (難しい方法で) 学びました。別。

必要なことは、そのデータを Intent Bundle の新しい Activity に渡すか、SharedPreference に保存することです。アクションを次のアクティビティに進め、(必要に応じて) OS が前のアクティビティを破棄できるようにするため、コールバック インターフェイスを使用することはお勧めできません。

次のアクティビティのインテントを作成するときは、Intent.putExtra(...) メソッドを使用して、新しいアクティビティに渡すデータを追加します。新しいアクティビティでは、getIntent().get*Datatype*Extra(..) メソッドを使用してデータを取得します。

于 2013-11-10T04:57:32.843 に答える
0

1、OnPostExecute が呼び出される前に onCreate で rec_count を取得していますか? コードを確認してください 2、そうでない場合は、rec_count の前に volatile を追加してください: public static volatile int rec_count、試してみてください。

于 2013-11-10T04:19:23.603 に答える