如何使用大约10个变量在Android中保存项目?

时间:2012-09-17 11:48:21

标签: android database sqlite listview sharedpreferences

我是Android开发的新手。我有两项活动 A B 。在活动 A 中,我使用xml解析器来获取每个包含大约10个字符串的对象。我想将这些对象传递给活动 B ,并且应该有一个列表视图显示所有对象。单击列表视图中的对象应显示10个字符串。

我不确定是否必须使用SQLite数据库,或者我是否只能使用SharedPreferences? 或者我甚至可以将它存储在内部存储器中?

即使我杀了应用程序,也应该保存对象。

希望有人能给我一些提示,谢谢!

3 个答案:

答案 0 :(得分:2)

这可能有助于你

你可以随心所欲地传递你的字符串数据[1]使用Intent [2]使用Share Prefrence

像[1]意图一样 在你的第一个活动A

            Intent myintent= new Intent(FirstActivity.this,SecondActivity.class);
            myintent.putExtra("Name1", "your String");
            myintent.putExtra("Name2", "your String");
            myintent.putExtra("Name3", "your String");
            myintent.putExtra("Name4", "your String");
            startActivity(myintent);
第二个ActivityB中的

    Intent myintent = getIntent();
    if(null!=myintent.getExtras()){
    String Name1 = myintent.getExtras().getString("Name1");        
    String Name2 = myintent.getExtras().getString("Name2");        
    String Name3 = myintent.getExtras().getString("Name3");        
    String Name4 = myintent.getExtras().getString("Name4");        
    Toast.makeText(getApplicationContext(),""+Name,12).show();                              

    }
    else
    {
        Toast.makeText(getApplicationContext(),"No Recor Here..",12).show();

    }

像SharedPreferences [2] 在你的第一个活动A

           Intent myintent= new Intent(FirstActivity.this,SecondActivity.class);
            SharedPreferences spref = this.getSharedPreferences("mynotifyid", MODE_WORLD_WRITEABLE);
            SharedPreferences.Editor spreedit = spref.edit();
            spreedit.putString("Name1", str1.toString());   
            spreedit.putString("Name2", str2.toString());   
            spreedit.putString("Name3", str3.toString());   
            spreedit.putString("Name4", str4.toString());   
            spreedit.commit();
            startActivity(myintent);

在你的第二个ActivityB中

        SharedPreferences spref = context.getSharedPreferences("mynotifyid", Context.MODE_WORLD_WRITEABLE);
        String str1 = spref.getString("Name1","");
        String str2 = spref.getString("Name2","");
        String str3 = spref.getString("Name3","");
        String str4 = spref.getString("Name4","");

用于保存对象使用SharedPreferences

答案 1 :(得分:1)

让这些对象实现接口Serializable,以便您可以使用Intent将对象传递给另一个Activity 也许这个小(!)示例可以帮助您:

public class MyModel implements Serializable {

    ...

}

public A extends Activity {

   public void onCreate(Bundle savedInstanceBundle) {
      ...
      //fetchData
      ...
      MyModel data = new MyModel(fetchedData);
      Intent intent = new Intent(this, B.class);
      intent.putExtra("KEY", data);
      startActivity(intent);
    }
}

public B extends Activity {

   public void onCreate(Bundle savedInstanceBundle) {
      Bundle extras = getIntent().getExtas();
      MyModel data = (MyModel) extras.getSerializable("KEY");

      ...
      //handle data
      ...
   }
}

答案 2 :(得分:0)

对于那10个字符串,我不会使用数据库。 SharedPreferences易于使用,很多例子都会处理您的需求。 如果以后需要一个无字符串,那么你可以使用内部存储器(二进制模式),但现在没有理由,imho。