我通过XML在一个活动中传递username的值。我想回忆一下下一个屏幕中的值,比如'Hello / Welcome'。如何使用GetExtra和PutExtra?
PLS。找到下面的代码,我已尝试过相同的代码。
用于在一个活动中存储用户名的值:
Intent myActivity2 = new Intent(this,Activity1.class);
myActivity2.putExtra("nickname", R.id.mynickname3);
startActivity(myActivity2);
用于回忆其他活动中的值:
Bundle extras = getIntent().getExtras();
String val = extras.getString("nickname");
TextView tv=new TextView(this);
tv.setText(val);
答案 0 :(得分:2)
如果要重复使用用户名,请使用sharedPreference。
将userName传递给另一个活动然后使用它不是一个好主意。像userName这样的字段可能需要反复使用。
答案 1 :(得分:0)
你几乎是对的。
仅传递EditText的id是不够的。您必须使用以下代码 -
((EditText)findViewById(R.id.mynickname3)).getText().toString();
int putExtra。其他一切都应该没问题。
更新:不要忘记通过以下方式将TextView设置为OnCreate中的contentView:
setContentView(..)
答案 2 :(得分:0)
在第一个活动中,您传入一个整数值( R.id.mynickname3 )。相反,你需要给它一个字符串。请改用:
myActivity2.putExtra("nickname", getString(R.id.mynickname3));
作为旁注,你试图不必要地获得一个Bundle。试试这个:
String val = getIntent().getStringExtra("nickname");
TextView tv = new TextView(this);
if (val != null)
{
tv.setText(val);
}
答案 3 :(得分:0)
你的代码中只是一个愚蠢的错误:
myActivity2.putExtra("nickname", R.id.mynickname3);
如果你有EditText(昵称)的书面ID,那么它应该是:
txtNickName = (EditText) findViewById (R.id.mynickname3);
myActivity2.putExtra("nickname", txtNickName.getText().toString());