通过Intent Android传递数据

时间:2014-07-27 13:56:38

标签: android android-intent eclipse-adt

我目前正在尝试编写一个应用程序,要求用户输入他们的名字。这是“登录”页面。

公共类登录扩展Activity {

EditText username;

@Override
public void onCreate(Bundle savedInstanceState)
{
    username = (EditText)findViewById(R.id.username);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.login);

    Button loginButton = (Button) findViewById(R.id.loginBtn);

    loginButton.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            Intent intent = new Intent("com.example.MainActivity");

            Bundle extras = new Bundle();
            extras.putString("name", username.getText().toString());
            intent.putExtras(extras);

            startActivity(intent);
        }
    });

}

protected void onDestroy() {        
    super.onDestroy();
}

protected void onPause() {
    super.onPause();
    saveAsPreferences();
}

protected void onRestart() {
    super.onRestart();
    saveAsPreferences();
}

protected void onResume() {
    super.onResume();
    retrievePreferences();
}

protected void onStart() {
    super.onStart();
    retrievePreferences();
}

protected void onStop() {
    super.onStop();
    saveAsPreferences();
}
public void saveAsPreferences() 
{
    SharedPreferences prefs = getSharedPreferences("preferences", MODE_PRIVATE);
    String Name = username.getText().toString();
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString("name", Name);
    editor.commit();
}
public void retrievePreferences()
{
    SharedPreferences prefs = getSharedPreferences("preferences",MODE_PRIVATE);
    if(prefs.contains("name"))
    {
        String Name = prefs.getString("name", "");
        username.setText(Name);
    }
}

}

这是我的结果页面

公共类MainActivity扩展了Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Bundle bundle = getIntent().getExtras();
    String Name = bundle.getString("name");
    TextView welcomeUser = (TextView) findViewById(R.id.welcomeUser);
    welcomeUser.setText("Hello " + Name + "!");

}

为什么我的代码不起作用?谢谢! 注意:在开始传递数据之前,我已经正确地链接了页面。

2 个答案:

答案 0 :(得分:1)

您应该更改Login Activity

中的顺序
setContentView(R.layout.login);
username = (EditText)findViewById(R.id.username);

首先,您需要setContentView(..),然后引用Views

答案 1 :(得分:0)

这样做。在您的登录类中不要使用Bundle。使用intent.putExtra(“name”,username);然后在你的主要活动课上。 。getIntent()getStringExtra( “名称”);这将返回用户名并在setContentView

后定义Edittext