-1

私は共通のアクティビティ、つまりBaseActivityを持つアプリケーションを開発しています。アプリケーション内の他のすべてのアクティビティに拡張しています。BaseActivity でいくつかの AsyncTask を実行して、他のすべてのアクティビティに反映させます。私のクエリは、アクティビティの 1 つからこの BaseActivity に値を渡す必要があるということです。

クラス、インターフェイスの概念を試しましたが、うまくいきませんでした。これを達成する方法を教えてください。私の参照コードが必要な場合は、コメントしてください。投稿します。

編集済み

このcountvalueBaseActivityに渡す必要があります。MainActivity2 などの別のアクティビティに移動しているため、インテントを使用できません

MainActivity これは私の AsyncTask コードです

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

    @Override

    protected Integer doInBackground(String... params) {

        Integer result = 0;

        try {

            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse httpResponse = httpclient.execute(new HttpGet(params[0]));
            int statusCode = httpResponse.getStatusLine().getStatusCode();
            if (statusCode == 200) {
                String response = streamToStringCount(httpResponse.getEntity().getContent());
                parseResultCount(response);
                result = 1;
            } else {
                result = 0;
            }
        } catch (Exception e) {

            e.printStackTrace();
        }

        return result;
    }

    @Override

    protected void onPostExecute(Integer result) {

        //  isRefreshing = false;


        //layout.setRefreshing(false);

        super.onPostExecute(result);

    }
}


String streamToStringCount(InputStream stream) throws IOException {

    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream));
    String line;
    String result = "";
    while ((line = bufferedReader.readLine()) != null) {

        result += line;
    }
    if (null != stream) {

        stream.close();
    }
    return result;
}


private void parseResultCount(String result) {
    Detail_Item item;
    try {
        JSONObject posts = new JSONObject(result);


        //rstatus1=posts.optString("count");
        countValue=posts.optInt("count");
        countValue1=countValue;
        Log.i("countvalue", String.valueOf(countValue));

    }

    catch (JSONException e) {

        e.printStackTrace();

    }
}
4

5 に答える 5

1

値を SharedPreferences に保存し、アプリケーションのアクティビティから取得します。

于 2016-05-26T06:56:53.743 に答える
0

このクラスまたはサブクラスのすべてのインスタンスがそれを共有するため、 public static を定義することでこれを実現できます。これは本当に醜い解決策であり、お勧めしません。エクストラを使ったほうがいい

インテント インテント = 新しいインテント (コンテキスト、SecondActivity.class); インテント.putExtra("キー", 値); startActivity(インテント)

詳細については、Doc https://developer.android.com/guide/components/intents-filters.htmlを参照してください。

于 2016-05-26T07:05:49.290 に答える
0

私の理解によると、MainActivity(拡張 BaseActivity) から BaseActivity に何らかの値を渡したいと考えています。

BaseActivity に次のようなメソッドを作成するだけです。

protected void setYourValue(Object obj){
    ..........
}

MainActivity からこのメソッドを呼び出して、必要なものを設定するだけです。

setYourValue("This is my value");

MainActivity が BaseActivity から拡張されていない場合、

 public static void setYourValue(Object obj){
    ..........
 }

メインアクティビティでは、

BaseActivity.setYourValue("This is my value");

sharedpreferrence の実装について調査してください。

于 2016-05-26T06:56:44.073 に答える