Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 第一次单击editText时未传递值_Java_Android_Android Edittext_Onclicklistener - Fatal编程技术网

Java 第一次单击editText时未传递值

Java 第一次单击editText时未传递值,java,android,android-edittext,onclicklistener,Java,Android,Android Edittext,Onclicklistener,我需要通过editText从用户处获取a和b的值,并将其传递给下一个活动。这是第一个活动: import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import

我需要通过editText从用户处获取a和b的值,并将其传递给下一个活动。这是第一个活动:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.content.Intent;
import android.widget.EditText;

public class activitysecond extends AppCompatActivity {

    private String[] arraySpinner;
    private String[] arraySpinner2;
    int a=0,b=0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.secondactivity);
        final EditText editText1=(EditText) findViewById(R.id.editText1);
        final EditText editText2=(EditText) findViewById(R.id.editText2);
        final Bundle bundle = new Bundle();
        Button EnterButton=(Button) findViewById(R.id.Enterbutton);

        this.arraySpinner = new String[]{
                "None", "Lightly Active", "Moderately Active", "Very Active"
        };
                Spinner s = (Spinner) findViewById(R.id.spinner1);
        ArrayAdapter<String> adapter = new ArrayAdapter<>
                (this,
                        android.R.layout.simple_spinner_dropdown_item, arraySpinner
                );

        s.setAdapter(adapter);

        this.arraySpinner2 = new String[]{
                "Male", "Female"
        };

                Spinner s1 = (Spinner) findViewById(R.id.spinner2);
        ArrayAdapter<String> adapter1 = new ArrayAdapter<>
                (this,
                        android.R.layout.simple_spinner_dropdown_item, arraySpinner2
                );
        s1.setAdapter(adapter1);

        editText1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                a = Integer.valueOf(editText1.getText().toString());
                bundle.putInt("one",a);
            }

        });

        editText2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                b = Integer.valueOf(editText2.getText().toString());
                bundle.putInt("two",b);
            }

        });

        EnterButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent z = new Intent(activitysecond.this, activitythird.class);
                startActivity(z);
                z.putExtras(bundle);
            }
        });
    }
}
}

不会传递值a和b,第三个文本也不会更改
请帮忙

如下修改代码:

EnterButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent z = new Intent(activitysecond.this, activitythird.class);
                z.putExtras(bundle);
                startActivity(z);
            }
        });
Intent z = new Intent(activitysecond.this, activitythird.class);
z.putExtras(bundle);
startActivity(z);

z.putExtras(bundle)必须高于
起始触觉(z)

在将捆绑包添加到您的意图之前,请先开始您的活动

试着这样做:

EnterButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent z = new Intent(activitysecond.this, activitythird.class);
                z.putExtras(bundle);
                startActivity(z);
            }
        });
Intent z = new Intent(activitysecond.this, activitythird.class);
z.putExtras(bundle);
startActivity(z);

删除编辑文本的
ClickListener
,并在enter按钮的
onClick
中添加以下行

  a = Integer.valueOf(editText1.getText().toString());
  bundle.putInt("one",a);
  b = Integer.valueOf(editText2.getText().toString());
  bundle.putInt("two",b);
替换这个

EnterButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent z = new Intent(activitysecond.this, activitythird.class);
        startActivity(z);
        z.putExtras(bundle);
    }
});


在下面;putExtra先于startActivity,这是错误的

EnterButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent z = new Intent(activitysecond.this, activitythird.class);
            startActivity(z);
            z.putExtras(bundle);
        }
    });
试试下面的代码

EnterButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent z = new Intent(activitysecond.this, activitythird.class);

            z.putExtras(bundle); // first
            startActivity(z); //second
        }
    });
此外,不应为您的案例实现editText onClickListeners。您应该通过以下方式获取变量:

if (editText1.getText() != null) { // to avoid exception
    a = Integer.valueOf(editText1.getText().toString());
    bundle.putInt("one",a);
}
if (editText2.getText() != null) { to avoid exception
    b = Integer.valueOf(editText2.getText().toString());
    bundle.putInt("two",b);
}

在开始活动后设置附加:startActivity(z);z、 putExtras(束);在startActivity()之前尝试putExtra()