[英]Sharing between Activities, first class extends Activity but Other don't
我有这段代码需要用户输入,我基本上想从用户那里获得一个小型Contacts应用程序的名称和电话号码。 当用户在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”
除了使用intent之外,您为什么不使用共享首选项将所需的任何值放入其中,这样您就可以在应用程序中获得所需的任何内容,而不必将其强制为活动,只需将上下文传递给该类即可使用共享首选项。
您可以使用两种技术:1.借助Application
类。 或2.利用SharedPreference
帮助。
我将讲第二种方法。 因为它易于使用。
在调用DatabaseHandler
之前,在您的SQLiteOpenHelper
类中编写以下代码:
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");
难道您只是使用getter和生产者的实例来获取价值? 就像是
Producer.java
public String getName() {
return username;
}
public String getPwd() {
return password;
}
并在消费者类中将它们用作类似:
消费者.java
Producer producer = new Producer();
producer.getName();
producer.getPwd();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.