繁体   English   中英

活动之间共享,头等舱扩展活动,但其他不扩展

[英]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();

您还可以在不扩展Activity的类中参考如何使用getIntent()?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM