首页 > 解决方案 > 在第一个和第三个活动之间传递数字

问题描述

嗨,我正在研究计算器,我有问题。也就是说,当我想从第三个活动中的第一个活动的编辑文本中传递数字时,我无法用它做任何事情。例如对于第一个数字,我想添加 3 并在添加后设置显示新值我不能。我知道我有点困惑,但我希望你知道发生了什么

这是第一个活动:

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

    btn1=(Button) findViewById(R.id.button);
    et1=(EditText) findViewById(R.id.editText);
    et2=(EditText) findViewById(R.id.editText2);

    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(MainActivity.this., Main2Activity.class);
            String age= et1.getText().toString();
            intent.putExtra("AGE", age);

            String weight= et2.getText().toString();
            intent.putExtra("WEIGHT", weight);

            startActivity(intent);
        }
        }
    };


}

}

第二:

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

    btn1=(Button) findViewById(R.id.button2);
     btn1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             Intent intent=new Intent(Main2Activity.this, Main3Activity.class);
             String age= getIntent().getStringExtra("AGE");
             intent.putExtra("AGE", age);

             String weight= getIntent().getStringExtra("WEIGHT");
             intent.putExtra("WEIGHT", weight);
             startActivity(intent);
         }
     });
}

}

第三:

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

    tv1=(TextView) findViewById(R.id.textView);
    String weight= getIntent().getStringExtra("WEIGHT");
    String age= getIntent().getStringExtra("AGE");




    double x= age*21;
    tv1.setText(x);
}

}

标签: javaandroidandroid-studio

解决方案


代码中几乎没有问题,首先,确保你真的在第三个活动中。因为我在代码中只能看到两个活动:MainActivity,Main2Activity。

另一件事是在第三个活动的 onCreate 中,您正在double为该setText方法赋值,它会抛出 ResourceNotFound 异常,因为没有方法,名称setText和接受double参数类型。要完成这项工作,您需要将doublevalue 转换为String,如下所示:

tv1.setText(String.valueOf(x));

更新

此外,您的年龄变量是字符串类型,因此要构建正确的数学表达式,您需要将年龄变量的类型转换为整数:所以:

double x= Integer.parseInt(age)*21;


推荐阅读