0

アクティビティを開始せずに、インテントを介して 1 つのアクティビティからデータを渡す方法を知りたいです。TabViews を使用していますが、他のアクティビティを開始すると、MainActivity.tabHost.setCurrentTab(2); を使用しているため、TabView と TabIcons が失われます。タブを切り替えます。

btnShowResult.setOnClickListener(new OnClickListener() {    
        @Override
        public void onClick(View v) {
            result = database.getResult();
            MainActivity.tabHost.setCurrentTab(2);
        }
    });

ボタンをクリックすると、グローバル変数の結果を定義し、データベースからの値を入力します。3 番目のタブが読み込まれ、そこで txtView.setText(SecondTab.result+""); を呼び出します。

これは、ボタンを初めてクリックしたときに正常に機能します。ただし、変数の結果を変更しても、更新されないため、txtView には影響しません。

グローバル変数の結果を変更した後、txtView を更新するにはどうすればよいですか? ThirdTab.txtView.invalidate(); の呼び出し onClick-Function でアプリがクラッシュします。

ありがとう。


編集:

大丈夫。結果をsharedPrefsに保存し、そこから2番目のタブにロードすることで、SharedPreferencesでそれを行いました。ただし、txtView に表示された結果は同じままで、変更されません。sharedPrefs の結果が変更された後、2 番目のタブに txtView を更新するように指示する場所と方法を教えてください。

4

4 に答える 4

0

アプリを強制終了するまで値を維持するための最良の方法は、共有設定です。したがって、共有設定から値を保存および取得するには、このリンクをたどって くださいhttp://saigeethamn.blogspot.in/2009/10/shared-preferences-android-developer.html

于 2012-08-29T12:04:51.270 に答える
0

あまりいいコードではありませんが、今は動作します:

public static int hasChanged = 0;
...
btnShowResult.setOnClickListener(new OnClickListener() {    
        @Override
        public void onClick(View v) {
            result = database.getResult();
            if (hasChanged != 0)
                Tab3.txtView.setText(result+"");

            MainActivity.tabHost.setCurrentTab(2);
        }
    });

そして、txtView を作成して描画した後の 3 番目のタブで、グローバル変数 hasChanged を 1 に設定したので、ボタン btnShowResult をクリックするたびに、txtView が結果の新しい値に設定されます。

助けてくれてありがとう。

于 2012-08-30T06:40:47.703 に答える
0

必要なデータを共有設定に保存し、任意のアクティビティからアクセスできるため、インテントを介して開始アクティビティを使用してデータを渡す必要はありません

 http://android-er.blogspot.com/2011/01/example-of-using-sharedpreferencesedito.html

 http://saigeethamn.blogspot.com/2009/10/shared-preferences-android-developer.html

 http://alchemiaandroid.altervista.org/sharedPreferencesTutorial.html

上記のリンクは、共有設定を使用するためのチュートリアルの例です。データを (キー、値) ペアとして保存すると、そのキーで必要な値にアクセスできます

于 2012-08-29T11:58:57.370 に答える
0

txtView.setText(result)もう一度呼び出すとどうなりますか?

于 2012-08-29T11:59:23.703 に答える