2013-05-12 289 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()) 
相關問題