解决: 我解决了这个问题。感谢Ted指向我在结果代码返回0的正确方向。然后我意识到当主Activity再次被调用时。它取消了结果。所以我检查了我的清单文件,并启用了单实例....
我花了很长时间坚持这个问题。用Google搜索答案。但我似乎无法到达任何地方。我是Android的新手,并且在Stack溢出时发布新内容,如果我搞砸了格式化,那就很抱歉。
好的,我有一个主要活动的应用程序。在这个活动上,我有一个登录按钮。 当用户单击登录按钮时,它会在新的活动(登录活动)中打开,该活动基本上允许用户登录。所有这一切都在运作和测试。但我的问题是,当用户登录时,我想将他的名字,姓氏和用户ID传递给主要活动。为了尝试在两个活动之间传递数据,我尝试遵循http://developer.android.com/resources/faq/commontasks.html#opennewscreen(在屏幕上返回结果的标题下面。
好的,所以这里是我如何做到这一点的代码: 主要活动代码:
logIn = (Button)this.findViewById(R.id.LogInButton);
logIn.setVisibility(View.INVISIBLE);
logIn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent loginIntent = new Intent(Main.this, Login.class);
startActivityForResult(loginIntent, LOGIN_CODE);
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case (LOGIN_CODE) : {
if (resultCode == Activity.RESULT_OK) {
this.setLogin(data);
}
break;
}
}
}
以下是登录活动的代码:
/**
* Login to user.
*/
private void loginCheck()
{
firstName = firstNameET.getText().toString();
lastName = lastNameET.getText().toString();
patientID = patientIDET.getText().toString();
password = passwordET.getText().toString();
boolean loginCorrect = management.isLoginCorrect(patientID, firstName, lastName, password);
if(loginCorrect == true)
{
//Pass login data to main(QOLMeasurment) activity and bring us back to that activity.
Intent intent = new Intent(Login.this, QOLMeasurement.class);
Bundle bundle = new Bundle();
bundle.putString("firstName", firstName);
bundle.putString("lastName", lastName);
bundle.putString("patientID", patientID);
intent.putExtras(bundle);
setResult(Activity.RESULT_OK, intent);
Log.d("TEST", "TEST!");
Login.this.finish();
Log.d("TEST", "TEST:(");
}
else
{
Toast.makeText(this, "Login Failed.", Toast.LENGTH_LONG).show();
}
}
所以我的问题是我似乎无法将数据恢复到主要活动。试图在这里排除故障是我的难点。根据我的理解,方法startActivityForResult()将开始侦听结果,结果将由onActivityResult()方法处理;所以在我的登录活动中我使用setResult(),然后关闭将resultCode传递给onActivityResult()的Activity,我是否正确理解这个?
如果是这样,那么当我调用Login.this.finish()时,问题就出现了;它似乎没有完成活动,因此resultCode永远不会更新。有帮助吗?我真的陷入了困境。 谢谢你的时间!!! 波比
答案 0 :(得分:0)
在您的登录活动代码中,替换:
Intent intent = new Intent(Login.this, Main.class);
与
Intent intent = new Intent();