我是android的新手,并且正在一个相当基本的android应用程序上工作,用户可以在其中创建添加到ListView的项。在创建每个项目时,我创建一个'clicker'类的实例,该实例跟踪每个项目的名称/价格计数/其他统计信息。

当单击列表中的某个项目时,它将启动一个常规活动,供所有项目使用。我将“ clicker”类对象传递给活动,以便它可以构造初始化文本视图。

单击列表项时会发生这种情况(在名为clickers的哈希图中创建了clicker实例,因此我首先检索该键,然后调用clickers.get(key))。

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // pass along some ID so that the new activity can retrieve info
    String clickedName = clickerListItems.get(arg2);

    Intent intent = new Intent(MainActivity.this, ClickerActivity.class);
    intent.putExtra("clickerName", clickers.get(clickedName));
    startActivity(intent);
}


这是一般活动接收信息的方式

public class ClickerActivity extends Activity {
    protected Clicker currentClicker;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_clicker);
        Intent i = getIntent();
        currentClicker = (Clicker) i.getSerializableExtra("clickerName");

        TextView clickerHeader = (TextView) findViewById(R.id.clickerHeader);
        clickerHeader.setText(currentClicker.getName());

        final TextView countDisplay = (TextView) findViewById(R.id.countText);
        countDisplay.setText(Integer.toString(currentClicker.getCount()));

        final Button incrementButton = (Button) findViewById(R.id.incrementButton);
        final Button resetButton = (Button) findViewById(R.id.resetButton);
         (continues)


这是一般活动的外观,它增加了一些视角。我刚开始时,现在就很简单了。



问题是说我单击ListView的项目A并增加它的计数器(统计之一),然后按返回按钮返回到List Activity。现在,如果我单击相同的列表项以重新加载活动,则似乎没有保存任何数据。 clicker类实例实际上没有被更改吗?如何保存信息或恢复信息?我会在onRestoreInstanceState上做一些事情,但是由于这是一个活动,可能无法通过列表中的任何项目加载,对吗?

如果需要任何澄清,请告诉我,谢谢。

最佳答案

您可以使用共享首选项来保留这些值。

http://developer.android.com/reference/android/content/SharedPreferences.html

使用此功能,您的任何数据都不会丢失。只需确保在终止应用程序后再次启动该应用程序时,便会重置存储的值,以便将您的值保存用于活动重新启动,而不是应用程序重新启动(除非您也希望这样做)。

编辑:您还可以将所有主代码放入Asynctask()中,以便在后台进行处理,即使您退出应用程序也可以保持处理状态。

07-26 08:39