我是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()中,以便在后台进行处理,即使您退出应用程序也可以保持处理状态。