1

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

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

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

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

4

3 回答 3

2

这可能会帮助你

您可以随意传递字符串数据 [1] 使用 Intent [2] 使用共享偏好


喜欢 [1]在您的第一个 ActivityA 中的意图

            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);

在第二个活动B

    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();

    }

像您的第一个 ActivityA 中的 SharedPreferences[2]

           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);

在你的第二个活动B

        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

于 2012-09-17T12:01:55.990 回答
1

让这些对象实现接口Serializable,这样您就可以使用一个可能的这个小(!)示例将对象传递给另一个 ActivityIntent 可以帮助您:

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
      ...
   }
}
于 2012-09-17T11:57:49.383 回答
0

对于这 10 个字符串,我不会使用数据库。SharedPreferences 易于使用,有很多示例,可以满足您的需求。如果稍后需要无字符串,则可以使用内部存储器(二进制模式),但现在没有理由,恕我直言。

于 2012-09-17T11:54:10.910 回答