android开发+使用 Intent 在 Activity 之间传输数据

标签 android android-intent error-handling android-toast

我正在创建一个包含 3 个按钮的简单应用程序,其中每个按钮都有其监听器,该监听器接受用户输入并进行一些数学计算,而不是在 toast 中显示结果。

但第三个按钮使用 intent 在第二个 Activity 中显示结果。

第一个按钮正常工作,但第二个和第三个不起作用。
意味着第二个不显示 toast ,第三个不显示第二个 Activity 的结果。

谁能帮我 ???

MainActivity.java

package com.tipcalc.assignment1;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

    EditText txt;
    Button btn1, btn2, btn3;

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

        txt = (EditText) findViewById(R.id.edittxt);
        btn1 = (Button) findViewById(R.id.button1);
        btn2 = (Button) findViewById(R.id.button2);
        btn3 = (Button) findViewById(R.id.button3);

        btn1.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

        String input;
        String result = null;
        Double dbl;

        if (arg0 == btn1) {
            input = txt.getText().toString();
            dbl = Double.parseDouble(input) * 0.1;

            result = String.valueOf(dbl);


        } else if (arg0 == btn2) {

            input = txt.getText().toString();
            dbl = Double.parseDouble(input) * 0.15;

            result = String.valueOf(dbl);

        }
            Toast.makeText(this, result, Toast.LENGTH_LONG).show();
        if(arg0 == btn3){

            Intent intent = new Intent(MainActivity.this, SecondPage.class);
            intent.putExtra("com.tipcalc.assignment1.showResult", result);
            startActivity(intent);

        }

    }

}

SecondActivity.java
package com.tipcalc.assignment1;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;

public class SecondPage extends Activity {

    TextView txt_result;

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

        txt_result = (TextView) findViewById(R.id.txtResult);

        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            String value = extras
                    .getString("com.tipcalc.assignment1.showResult");
            txt_result.setText(value);

        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.second_page, menu);
        return true;
    }

}

最佳答案

您当前仅在第一个按钮上设置 OnClickListener。改变这个:

    btn1.setOnClickListener(this);

对此:
    btn1.setOnClickListener(this);
    btn2.setOnClickListener(this);
    btn3.setOnClickListener(this);

更新(基于评论)

当您按下 btn3 时,您没有将结果发送到下一个 Activity ,因为您没有处理该 block 中的值。如果在 arg0 == btn3 的情况下遵循 onClick 处理程序的逻辑,您将看到结果永远不会被设置。我不知道目的或预期结果是什么,但是单击btn1时您正在计算一个值,单击btn2时正在计算另一个值,但是单击btn3时您没有进行任何计算

关于android开发+使用 Intent 在 Activity 之间传输数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20060475/

相关文章:

android - 如何在 Flutter 中使用本地资源播放音频?

java - 当我在 Spinner 上选择项目时出现 NullPointerException

Android 在 Fragment 中添加 Fragment

android - 使用Kotlin将多个值传递给Android Studio中的另一个Activity

android - 使用android中的搜索栏逐渐改变5个矩形的颜色a

java.lang.NullPointerException : (ListFragment)

android - 如何使用日历 Intent ?

node.js - 如果没有中间件处理传递给 “next”的错误,该怎么办?

php - PHP fatal error : Call to undefined method K2P_API_OCWRITER::cleanPost(). OpenCart

error-handling - 将抛出的异常更改为失败的简洁方法?