0

我想知道如何在不启动活动的情况下通过意图从一项活动传递数据。我正在使用 TabViews,当我启动另一个 Activity 时,我失去了 TabView 和 TabIcons,因为我使用 MainActivity.tabHost.setCurrentTab(2); 在选项卡之间切换。

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

单击按钮时,我定义了一个全局变量 result 并用我的数据库中的值填充它。它加载我的第三个选项卡,我在其中调用 txtView.setText(SecondTab.result+"");

当我第一次单击该按钮时,这工作正常。但是更改变量结果对 txtView 没有影响,因为它没有刷新。

更改全局变量结果后如何刷新 txtView?调用 ThirdTab.txtView.invalidate(); 在 onClick-Function 中导致我的应用程序崩溃。

谢谢。


编辑:

好的。我通过将结果保存到 sharedPrefs 并在第二个选项卡中从它加载来使用 SharedPreferences 完成此操作。但是,我的 txtView 中显示的结果仍然相同并且不会改变。在 sharedPrefs 中的结果发生更改后,我在哪里以及如何告诉我的第二个 Tab 刷新 txtView?

4

4 回答 4

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

上面的链接是使用共享首选项的教程示例。将数据保存为 (Key,value) 对,然后您可以通过其键访问所需的值

于 2012-08-29T11:58:57.370 回答
0

如果您txtView.setText(result)再次调用怎么办?

于 2012-08-29T11:59:23.703 回答
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 后的第三个选项卡中,我将全局变量 hasChanged 设置为 1,这样现在每次单击按钮 btnShowResult 后,txtView 都会设置为结果的新值。

谢谢你们的帮助。

于 2012-08-30T06:40:47.703 回答