所以,我基本上是在玩弄某种登录表单,并试图在即将到来的活动中用用户名打个招呼。代码编译没有问题,但是当我点击登录按钮时应用程序崩溃,在我尝试实现自定义的 hello 之前登录成功,所以问题必须在以下代码中的某个地方。
这是我称之为活动的地方:
Intent k = new Intent(this, MainActivity.class);
//Sends login name to activity k
k.putExtra("loginName", login.getText().toString());
//login is the EditText variable name for the login text field
startActivity(k);
这是我检索额外数据并尝试按照描述使用它的地方:
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class ProfileActivity extends Activity {
TextView helloString;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
Bundle extras = getIntent().getExtras();
//Getting the hello text string
helloString = (TextView)findViewById(R.id.textHello);
String loginName = extras.getString("loginName");
helloString.setText("¡Hello, " + loginName + "!");
}
}
如果我在这两行中添加评论,它会以某种方式避免崩溃:
String loginName = extras.getString("loginName");
helloString.setText("¡Hello, " + loginName + "!");
不过,我无法确定问题是否真的存在,我认为这可能与第一个活动发送的数据类型与第二个活动中检索到的类型不匹配有关,但仍然没有在尝试了一些东西之后的线索。
提前致谢。
编辑:
我实际上发现我可能与以下事实有关所以我真的不知道我应该如何处理。
编辑2:
所以我终于自己解决了,对于任何感兴趣的人,我只是将数据发送到 MainActivity.class
Intent k = new Intent(this, MainActivity.class);
//Sends login name to activity k
k.putExtra("loginName", login.getText().toString());
startActivity(k);
并且,在 Main Activity 内部,当调用 ProfileActivity 将其设置为选项卡时:
//Profile tab
intent = new Intent(this, ProfileActivity.class);
Bundle extras = getIntent().getExtras();
intent.putExtra("loginName", extras.getString("loginName"));
spec = mTabHost.newTabSpec("home")
.setIndicator("Home", res.getDrawable(R.drawable.profile_icon))
.setContent(intent);
mTabHost.addTab(spec);
问题解决了,谢谢大家的帮助。