2013-05-12 239 views
1

我有onActiviResult函数的问题。代码编译和模拟,但数据参数返回null。onActivityResult - 数据字符串返回null

在主函数:

private static String sActualLogin = "admin"; 
private static String sActualPassword = "qwerty"; 

(...) 

public void setRegisterOnClick(View v) 
    { 
     Intent intentLOGIN = new Intent(this, Users.class); 
     intentLOGIN.putExtra("Type",1); 
     startActivityForResult(intentLOGIN, 1); 
    } 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if(data.getExtras().containsKey("Login")){ 
     if(resultCode==RESULT_OK && requestCode==1){ 
      String sContainer = data.getStringExtra("Login"); 
       sActualLogin=sContainer; 
       RESULT1.setText(sActualLogin); 
      } 
     } 

    if(data.getExtras().containsKey("Password")){ 
     if(resultCode==RESULT_OK && requestCode==1){ 
      String sContainer=data.getStringExtra("Password"); 
       sActualPassword=sContainer; 
       RESULT2.setText(sActualPassword); 
      } 
     } 
     } 

然后代码进入用户:

package com.example.login; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.TextView; 

public class Users extends Activity { 

    private EditText etNewLogin; 
    private EditText etNewPassword; 
    private TextView RESULT3; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.users); 
     etNewLogin = (EditText) findViewById(R.id.etChangeLogin); 
     etNewLogin = (EditText) findViewById(R.id.etChangePassword); 
     RESULT3 = (TextView) findViewById(R.id.RESULT3); 

     Intent Intent2=getIntent(); 
     int number = Intent2.getIntExtra("Type", 0); 
     RESULT3.setText("" +number); //returns 1 well 
    } 

    public void giveResponse(View v) 
    { 
     Intent intent = getIntent(); 
     int iOperation = intent.getIntExtra("Type", 0); 

     if (iOperation == 1){ 
      String sNewLogin = etNewLogin.getText().toString();  
      intent.putExtra("Login", sNewLogin); 
      setResult(RESULT_OK, intent); 
      finish(); 
     } 

     if (iOperation == 2){ 
      String sNewPassword = etNewPassword.getText().toString(); 
      intent.putExtra("Password", sNewPassword);  
      setResult(RESULT_OK, intent); 
      finish(); 
    } 


    } 
} 

所以我sActualLogin被设置为 “” onActivityResult后。请帮我解决这个问题。有什么不对,我看不到它。

+0

你在哪里调用'giveResponse'方法?你有没有尝试过使用断点来查看意图内传递了哪些数据? – 2013-05-12 21:42:27

+0

giveReponse正在通过用户活动中显示的按钮调用。而且我可以轻松地从MainActivity - > Users中的intent发送数据。我正在RESULT3 TextView上检查它。但是当我想通过setResult数据接收到我的信息时,通过“Login”标签(因为它在结构内部进入),但在从数据到临时字符串sContainter的字符串中,它变为空。 – F1sher 2013-05-12 21:54:22

+0

向我们展示LogCat的堆栈跟踪 – Blundell 2013-05-12 22:03:11

回答

2

假设你开始Users活动与startActivityForResult(intent, 1);,我唯一看到的就是你设定相同的变量两者的EditText观点:

etNewLogin = (EditText) findViewById(R.id.etChangeLogin); 
etNewLogin = (EditText) findViewById(R.id.etChangePassword); 

您还可以添加到if声明onActivityResult(...)检查以确保它不是空的:

if(data.getExtras().containsKey("Login") && !data.getStringExtra("Login").isEmpty()) 
相关问题