在活动之间共享,第一类扩展活动,但其他不扩展

时间:2013-02-20 07:25:39

标签: java android sqlite android-intent android-activity

我有这个代码从用户那里获取输入,我基本上想从一个小的联系人应用程序中获取用户的姓名和电话号码。当用户在EditText字段中输入数据时,我提取数据并执行此操作 -

        String _name,_phone;
        _name=name.getText().toString();
        _phone=phone.getText().toString();
        Intent in = new Intent(this, DatabaseHandler.class);
        in.putExtra("name", _name);
        in.putExtra("phone", _phone);
        startActivity(in);

但是另一个类不是从Activity类继承而是实际上来自" SQLiteOpenHelper"

  
    

公共类DatabaseHandler扩展了SQLiteOpenHelper

  

因此方法

 getIntent().getExtras().get("name"); 
无法正常工作,可能是因为该类未从Activity或其他内容继承。那么,我怎样才能将第一个活动中的数据共享到第二个活动,名为" DatabaseHandler"

3 个答案:

答案 0 :(得分:0)

除了使用intent之外,为什么不使用共享首选项来放置你想要的任何值,这样你就可以在你的应用程序中的任何地方获取不需要的活动必须只是将上下文传递给该类,以便使用共享偏好。

答案 1 :(得分:0)

你可以使用两种技术:1。获取Application类的帮助。或2.获取SharedPreference的帮助。

我将讲述第二种方法。因为它易于使用。

在调用SQLiteOpenHelper之前,在DatabaseHandler课程中

写下这个:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(_context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("username", your_username);
editor.putInt("password", your_password);
editor.commit();

现在致电DatabaseHandler,同时通过_context

现在在DatabaseHandler课程中写下这个:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String username = prefs.getString("username");
String password = prefs.getInt("password");

答案 2 :(得分:0)

你不能只使用getter和生产者的实例来获取值吗?像

这样的东西

Producer.java

public String getName() {
    return username;
}

public String getPwd() {
    return password;
}

并在消费者类中使用这些,如:

Consumer.java

Producer producer = new Producer();
producer.getName();
producer.getPwd();

您也可以参考How to use getIntent() in a class that does not extend Activity?