第一次单击editText时不会传递这些值



我需要通过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);
            }
        });
    }
}

我要传递值的下一个活动是

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class activitythird extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.thirdactivity);
}
public void thirdbutton(View view){
    final TextView thirdtext=(TextView) findViewById(R.id.thirdtext);
    Bundle seconddata=getIntent().getExtras();
    int vala=seconddata.getInt("one");
    int valb=seconddata.getInt("two");
    thirdtext.setText(vala + " " +valb);

}

}

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

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

这样试试:

Intent z = new Intent(activitysecond.this, activitythird.class);
z.putExtras(bundle);
startActivity(z);

更换此

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("one", Integer.parseInt(editText1.getText().toString()));
        z.putExtras("two", Integer.parseInt(editText2.getText().toString()));
        startActivity(z);
    }
});

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

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

在下面;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);
}

这样修改代码:

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

z.putExtras(bundle);必须高于startActivity(z);

最新更新