java - onActivityResult - 数据字符串返回 null

标签 java android android-intent

我对 onActiviResult 函数有疑问。代码编译和仿真,但数据参数返回 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();
    }


    }
}

所以我在 onActivityResult 之后将 sActualLogin 设置为“”。请帮我解决这个问题;那里有问题,我看不到。

最佳答案

假设你开始 UsersstartActivityForResult(intent, 1); 的 Activity ,我唯一看到的是您为 EditText 设置了相同的变量观点:

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

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

if(data.getExtras().containsKey("Login") && !data.getStringExtra("Login").isEmpty())

关于java - onActivityResult - 数据字符串返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16512302/

相关文章:

android - Android 中的快速缩略图检索

java - 如何关闭在我的java应用程序中运行的所有线程?

java - Gradle - 如何映射驱动器?

android - 如何获取存储在文件夹中的通过蓝牙接收的最新数据

java - 时间选择器对话框 : Change hours/minutes text size

android-intent - 电子邮件意图未将 Exchange Mail (Outlook) 显示为选项

java - 如何以编程方式读取休息服务的路径?

java - 如何将按钮放置在相对布局的中心?

android - 在没有 .class 的情况下开始 Activity

android - 打算在 Marshmallow 中使用存储资源管理器吗?