我有一个使用Jsoup从网站解析结果创建的项目列表,这是在按下图像按钮时启动的任务。结果看起来不错,但是当我按下手机上的后退按钮然后返回活动时,结果消失,屏幕显示为空白。这意味着用户必须再次按下按钮。
那么只有在按下图像按钮后,如何才能保留项目列表?
由于
修改
我查看了Android网站上的“数据存储”页面并完成了以下操作:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView( R.layout.new_sightings );
// Store data once created
SharedPreferences settings = getSharedPreferences( PREFS_NAME,0 );
reload = (Button)findViewById( R.id.reloadTen );
reload.setOnClickListener( this );
list = getListView();
list.setOnItemClickListener( new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id )
{
// Start an activity based on what list view item is pressed
Intent intent = new Intent( newSightings.this, newCompass.class );
// Pass the data we retrieved to the next activity
intent.putExtra( "info",data[position] );
startActivity( intent );
}
});
list.setTextFilterEnabled( true );
adapter = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, listItems );
setListAdapter( adapter );
}
@Override
protected void onStop()
{
super.onStop();
SharedPreferences settings = getSharedPreferences( PREFS_NAME,0 );
SharedPreferences.Editor editor = settings.edit();
for( int i = 0; i < data.length; i++ )
{
editor.putString( "sighting"+i,data[i].toString() );
}
editor.commit();
}
我知道我在onCreate方法上做得不多,因为我不确定如何正确地调用数据。有很多数据,每个键的值都有很大差异。顺便说一句,我应该在实际获取数据的AsyncTask中添加共享首选项吗?我对这个有点困惑......
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以通过两种方式保存此类信息:
SharedPreferences
将数据保存到用户后立即保存。我会选择#1,因为#2更麻烦。请参阅Activity Lifecycle文档,了解何时恢复已保存的信息。
答案 2 :(得分:1)
在使用共享偏好之前,您能说出您想要保存多少。如果你想保存很少的数据然后去保存它,但如果你有大量的数据,那么不喜欢使用共享偏好。 在按钮单击时从服务器检索数据时将数据存储在数据库中,并在需要时将其检索。
为了解决您的问题,您将“listitems”保存在您保存数据的地方,所以只需将其设置为静态,并尝试解决您的问题。
以上两点都必须适用于您的方案。