我有一个登录字段,我想获取这些数据并在另一个Acitivity上放置textView,但这两个之间有一个Activity。
按照目前的情况: MainActivity
Intent i = new Intent(MainActivity.this, FirstPage.class);
i.putExtra("username", loginField.getText().toString());
第三项活动: TextView textConta =(TextView)findViewById(R.id.textConta);
textConta.setText("*" + getIntent().getExtras().getString("username"));
并且textView为空。任何线索? 感谢
答案 0 :(得分:1)
您需要将意图从第二Activity
转到第三。
或者作为替代解决方案,您可以存储要在File
,SharedPreferences
,SQLiteDatabase
或其他存储空间中的活动之间传递的数据。
答案 1 :(得分:0)
在您拥有登录字段的活动中:
SharedPreferences login = getSharedPreferences("LOGIN", 0);
SharedPreferences.Editor editor = login.edit();
editor.putString("user", loginField.getText().toString());
editor.commit();
在您要显示的活动中:
SharedPreferences login = getSharedPreferences("LOGIN", 0);
String user = login.getString("user", "0");
textview.setText(user);
答案 2 :(得分:0)
您可以非常轻松地使用SharedPreferences
。将字符串保存在第一个活动中:
SharedPreferences settings = getSharedPreferences("AppName", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("username", loginField.getText().toString());
editor.apply();
然后在任何活动中获取字符串:
SharedPreferences settings = getSharedPreferences("AppName", Context.MODE_PRIVATE);
settings.getString("username", "");
答案 3 :(得分:0)
您也可以在内容类中使用静态变量,如下所示:
public class User{
static string username = "xxxx";
}
您可以在任何您想要的活动中获取用户名。因为这只是一个变量,所以我不建议使用SharedPreferences。
另一种方法是使用“应用程序”
public class User extends application{
private String username= "xxxx";
public String getUsername() {
return username;
}
}
在另一个活动中,您可以按照以下方法获取应用程序类:
User user = getApplication();
String username = user.getUsername();
android Clipboard是获取所需信息的第三种方式。
答案 4 :(得分:0)
一旦活动失去焦点,它所获得的所有值和活动本身都将丢失。因此我们必须将值带到第二个活动,然后再转到第三个活动。这是唯一的方法。我们可以使用它的意图,值可以存储在bundle中。
答案 5 :(得分:0)
创建一个简单的DataHolder类
public class DataHolder {
public static String SOME_STRING;
}
在一项活动中,只需设置DataHolder.SOME_STRING = editText.getText().toString();
在其他访问中
String abcd = DataHolder.SOME_STRING;
非常简单吧?