繁体   English   中英

如何将 EditText 值从一个活动到另一个活动作为 int 获取到 go

[英]How to get an EditText value to go from one activity to another as an int

正如标题所示,我试图从 EditText 字段中获取值并将它们(返回)作为修改后的 int 值发送到另一个活动,以便与按钮一起使用。 该方案的概念如下:

第一个活动包含一个小费计算器,并且有一个按钮可以让您更新每种小费类型(优秀、平均、缺乏)的小费金额。 第二个活动允许您查看此 (20, 18, 14) 的原始值并修改它们。 我都写了,我可以提取值,但我不知道为什么它不编辑它们,代码如下:

添加说明:第一个活动有一个您可以单击的按钮,您可以单击该按钮来引导第二个活动,然后您可以从那里编辑原始提示值(一个或全部),并且您可以单击一个按钮来更新它们(他们不应该更新)。 我不明白为什么我的代码不这样做。

package com.example.lab2;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    int excellent_tip = 20;
    int average_tip = 18;
    int bad_tip = 14;
    Button update_button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        update_button = findViewById(R.id.update_button);

        update_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent (MainActivity.this, MainActivity2.class);
                Bundle extras = new Bundle();
                extras.putString("excellent_value", excellent_tip + "");
                extras.putString("average_value", average_tip + "");
                extras.putString("lacking_value", bad_tip + "");
                intent.putExtras(extras);
                startActivity(intent);
            }
        });

        Intent intent = getIntent();
        int excelVal = intent.getIntExtra(MainActivity2.excellNewVal, 20);
        int avgVal = intent.getIntExtra(MainActivity2.avgNewVal, 18);
        int lackVal = intent.getIntExtra(MainActivity2.lackNewVal, 14);

        excellent_tip = excelVal;
        average_tip = avgVal;
        bad_tip = lackVal;
    }

    @SuppressLint("NonConstantResourceId")
    public void onRadioButtonClicked(View view) {
        boolean checked = ((RadioButton) view).isChecked();
        float bill;
        // Check which radio button was clicked
        switch (view.getId()) {
            case R.id.excellent_button:
                if (checked) {
                    EditText b = (EditText)findViewById(R.id.bill);
                    if (b.getText().toString().equals(""))
                        bill = 0;
                    else bill = Float.parseFloat(b.getText().toString());
                    compute_tip(bill, excellent_tip);
                }
                break;
            case R.id.average_button:
                if (checked) {
                    EditText b = (EditText)findViewById(R.id.bill);
                    if (b.getText().toString().equals(""))
                        bill = 0;
                    else bill = Float.parseFloat(b.getText().toString());
                    compute_tip(bill, average_tip);
                }
                break;
            case R.id.lacking_button:
                if (checked) {
                    EditText b = (EditText)findViewById(R.id.bill);
                    if (b.getText().toString().equals(""))
                        bill = 0;
                    else bill = Float.parseFloat(b.getText().toString());
                    compute_tip(bill, bad_tip);
                }

                break;
        }
    }
    @SuppressLint("DefaultLocale")
    public static String roundToTwoDigit(float paramFloat) {
        return String.format("%.2f%n", paramFloat);
    }
    void compute_tip(float bill, int percent) {
        float pct= (float)percent/100;
        float tip = bill * pct;
        float total = bill + tip;
        TextView t = (TextView)findViewById(R.id.computed_tip);
        String s = roundToTwoDigit(tip);
        t.setText(s);
        t = (TextView)findViewById(R.id.bill_total);
        s = roundToTwoDigit(total);
        t.setText(s);

    }
}

这是第二个活动:

package com.example.lab2;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity2 extends AppCompatActivity {

    EditText excellent_input, average_input, lacking_input;
    Button update_tip;
    int excellentTip, averageTip, lackingTip;
    public static String excellNewVal, avgNewVal, lackNewVal;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        excellent_input = findViewById(R.id.excellent_input);
        average_input = findViewById(R.id.average_input);
        lacking_input = findViewById(R.id.lacking_input);

        Bundle extras = getIntent().getExtras();
        String excellentVal = extras.getString("excellent_value");
        excellentTip = Integer.parseInt(excellentVal);
        String averageVal = extras.getString("average_value");
        averageTip = Integer.parseInt(averageVal);
        String lackingVal = extras.getString("lacking_value");
        lackingTip = Integer.parseInt(lackingVal);

        excellent_input.setHint(excellentVal);
        average_input.setHint(averageVal);
        lacking_input.setHint(lackingVal);

        update_tip = findViewById(R.id.update_tip);

        update_tip.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity2.this, MainActivity.class);

                String input1 = excellent_input.getText().toString();
                if (input1.length() != 0) {
                    excellentTip = Integer.parseInt(input1);
                    intent.putExtra("excellNewVal", excellentTip);
                }
                else intent.putExtra("excellNewVal", 20);

                String input2 = average_input.getText().toString();
                if (input2.length() != 0) {
                    averageTip = Integer.parseInt(input2);
                    intent.putExtra("avgNewVal", averageTip);
                }
                else intent.putExtra("avgNewVal", 18);

                String input3 = lacking_input.getText().toString();
                if (input2.length() != 0) {
                    lackingTip = Integer.parseInt(input3);
                    intent.putExtra("lackNewVal", lackingTip);
                }
                else intent.putExtra("lackNewVal", 14);
            }
        });
    }
}

不知道我做错了什么。

你需要使用onActivityResult,你做错了! 在您的第一个活动中,而不是调用startActivity(intent); , 使用startActivityForResult(intent, requestCode); . 在您将数据重新传递给第一个活动的第二个活动中,您使用setResult(RESULT_OK, intent) ,您的意图应该包含您修改的数字。 让我们回到第一个活动,您需要覆盖onActivityResult ,并在其中获取数据。 看看你的代码应该是怎样的: MainActivity1:

public class MainActivity extends AppCompatActivity {
int excellent_tip = 20;
int average_tip = 18;
int bad_tip = 14;
Button update_button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    update_button = findViewById(R.id.update_button);

    update_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent (MainActivity.this, MainActivity2.class);
            Bundle extras = new Bundle();
            intent.putExtra("excellent_tip", excellent_tip + "");
            intent.putExtra("average_tip", average_tip + "");
            intent.putExtra("bad_tip", bad_tip + "");
            startActivityForResult(intent, 1);
        }
    });

    excellent_tip = 20;
    average_tip = 18;
    bad_tip = 14;
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1 && resultCode == RESULT_OK){
        Intent intent = getIntent();
        excellent_tip = Integer.parseInt(data.getStringExtra("excellNewVal"));
        average_tip = Integer.parseInt(data.getStringExtra("avgNewVal"));
        bad_tip = Integer.parseInt(data.getStringExtra("lackNewVal"));
    }
}

}

主要活动2:

public class MainActivity2 extends AppCompatActivity {

EditText excellent_input, average_input, lacking_input;
Button update_tip;
int excellentTip, averageTip, lackingTip;
public static String excellNewVal, avgNewVal, lackNewVal;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    excellent_input = findViewById(R.id.excellent_input);
    average_input = findViewById(R.id.average_input);
    lacking_input = findViewById(R.id.lacking_input);

    Intent intent = getIntent();
    String excellentVal = intent.getExtras().getString("excellent_tip");
    excellentTip = Integer.parseInt(excellentVal);
    String averageVal = intent.getExtras().getString("average_tip");
    averageTip = Integer.parseInt(averageVal);
    String lackingVal = intent.getExtras().getString("bad_tip");
    lackingTip = Integer.parseInt(lackingVal);

    excellent_input.setHint(excellentVal);
    average_input.setHint(averageVal);
    lacking_input.setHint(lackingVal);

    update_tip = findViewById(R.id.update_tip);

    update_tip.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();

            String input1 = excellent_input.getText().toString();
            if (input1.length() != 0) {
                intent.putExtra("excellNewVal", input1);
            }
            else intent.putExtra("excellNewVal", "20");

            String input2 = average_input.getText().toString();
            if (input2.length() != 0) {
                intent.putExtra("avgNewVal", input2);
            }
            else intent.putExtra("avgNewVal", "18");

            String input3 = lacking_input.getText().toString();
            if (input2.length() != 0) {
                intent.putExtra("lackNewVal", input3);
            }
            else intent.putExtra("lackNewVal", "14");
            
            setResult(RESULT_OK, intent);
            finish();
        }
    });
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM