protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
username = (EditText) findViewById(R.id.Tusername);
EditText password = (EditText) findViewById(R.id.Tpassword);
Button login = (Button) findViewById(R.id.login);
CheckBox show = (CheckBox) findViewById(R.id.checkme);
if(show.isChecked()){
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}else{
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String usern = username.getText().toString();
settUsername(usern);
Intent intent = new Intent("display");
startActivity(intent);
}
});
}
public void settUsername(String u){
usern = u;
}
public String getUsername(){
return usern;
}
这是我的login.java
,我试图从edittext
public class display extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.display);
TextView v = (TextView) findViewById(R.id.usernd);
Login l = new Login();
String username = l.getUsername();
v.setText("Welcome" + username);
}
}
display.java
是我打印从编辑文本中获取的数据的地方!但它正在打印null
。有人可以帮我弄这个吗!我甚至将我从edittext中提取的数据转换为字符串,但我仍然无法打印所有数据null
答案 0 :(得分:1)
您正试图以错误的方式将数据从一个活动传递到另一个活动。您应该使用内置的意图机制:
Intent intent = new Intent(this, display.class);
intent.putExtra("username", usern);
startActivity(intent);
在显示活动中,您可以通过以下方式检索它:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.display);
TextView v = (TextView) findViewById(R.id.usernd);
Intent intent = getIntent();
String username = myIntent.getStringExtra("username");
v.setText("Welcome" + username);
}
Ps:我还建议定义以大写字母开头的类名(例如Display
而不是display
)。这不是强制性的,但每个Java开发人员都使用这种方法来使代码更清晰。此外,您还可以在类名中添加额外信息,以便其他开发人员更好地了解您的课程应该做什么(在这种情况下,我会使用DisplayActivity
而不仅仅是Display
)。