将字符串从一种方法传递到另一种方法 android
pass string from one method to another android
我是 android 开发新手,开始学习一些东西...
我想知道如何实现一件我知道非常基本的事情,但我无法用我对 Android 编程的实际知识找到实现它的方法。现在已经尝试了几个小时,但还是没有结果!我在这里发现了很多关于堆栈溢出的问题,人们问同样的事情,我已经尝试了很多,但终究没有成功!
我写了下面的代码,有 2 个方法(vo2maxCalculo 和 shareIt),"share it" 方法应该从 MSG1 变量中获取值并将这个值插入到 "shareBody" 字符串中,所以用户可以通过电子邮件等方式分享..
我该怎么做?
非常感谢!
public void vo2maxCalculo(View v) {
float minutos2;
double calculo2;
EditText minutos1 = (EditText) findViewById(R.id.minutos);
TextView resultado5 = (TextView) findViewById(R.id.vo2max12Resultado);
minutos2 = Float.parseFloat(minutos1.getText().toString());
calculo2 = 33 + 0.17 * (minutos2 - 1955) / 15;
String msg1 = String.format("%.2f", calculo2);
resultado5.setText(msg1);
}
public void shareIt(View v) {
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
String shareBody = String.format("The result is:", msg1);
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Final Result");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share via"));
}
如果我理解正确,那么这就是解决方案。我也确信几乎所有的编程语言都是这样完成的。
这两种方法似乎都是点击侦听器:仅当它们不是时才使用此方法
public String vo2maxCalculo(View v) { // changed here
float minutos2;
double calculo2;
EditText minutos1 = (EditText) findViewById(R.id.minutos);
TextView resultado5 = (TextView) findViewById(R.id.vo2max12Resultado);
minutos2 = Float.parseFloat(minutos1.getText().toString());
calculo2 = 33 + 0.17 * (minutos2 - 1955) / 15;
String msg1 = String.format("%.2f", calculo2);
resultado5.setText(msg1);
return msg1; // added this
}
public void shareIt(View v) {
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
//String shareBody = String.format("The result is:", vo2maxCalculo(v)); // Why String.format???
String shareBody = "The result is:" + vo2maxCalculo(v); // Replace this
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Final Result");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share via"));
}
这两种方法似乎都是点击侦听器:如果确实如此,请使用此方法
String msg1 = ""; // Added this
public void vo2maxCalculo(View v) {
float minutos2;
double calculo2;
EditText minutos1 = (EditText) findViewById(R.id.minutos);
TextView resultado5 = (TextView) findViewById(R.id.vo2max12Resultado);
minutos2 = Float.parseFloat(minutos1.getText().toString());
calculo2 = 33 + 0.17 * (minutos2 - 1955) / 15;
msg1 = String.format("%.2f", calculo2); // Edited this
resultado5.setText(msg1);
}
其他方法没有变化
像这样在两个作用域之外创建一个变量
String msg1; //Like this
public void vo2maxCalculo(View v) {
float minutos2;
double calculo2;
EditText minutos1 = (EditText) findViewById(R.id.minutos);
TextView resultado5 = (TextView) findViewById(R.id.vo2max12Resultado);
minutos2 = Float.parseFloat(minutos1.getText().toString());
calculo2 = 33 + 0.17 * (minutos2 - 1955) / 15;
msg1 = String.format("%.2f", calculo2); //Set it in here like this
resultado5.setText(msg1);
}
public void shareIt(View v) {
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
//Can still use it in here as long as the other method got called first
String shareBody = String.format("The result is: %s", msg1);
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Final Result");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share via"));
}
这样试试
移动 Activity
的 onCreate(...)
中所有 widgets
的所有初始化
minutos1 = (EditText) findViewById(R.id.minutos);//declare it globally at class level
resultado5 = (TextView) findViewById(R.id.vo2max12Resultado);//declare it globally at class level
您可以单独创建一个名为 Utils
的 class 并在 Utils class 中创建一个用于计算的静态方法并在两个 onClick
事件中调用它(通过这种方式您可以从任何 class)
调用此方法
public static String calculate(float minutos2) {
double calculo2 = 33 + 0.17 * (minutos2 - 1955) / 15;
String msg1 = String.format("%.2f", calculo2);
return msg1;
}
在 onClick
个 Button 中这样做
public void vo2maxCalculo(View v) {
float minutos2;
String msg = minutos1.getText().toString().trim();
if(msg != null && !msg.equalsIgnoreCase(""))
minutos2 = Float.parseFloat(msg);
else
minutos2 = 0.00;
String msg1 = Utils.calculate(minutos2);
resultado5.setText(msg1);
}
public void shareIt(View v) {
float minutos2;
String msg = minutos1.getText().toString().trim();
if(msg != null && !msg.equalsIgnoreCase(""))
minutos2 = Float.parseFloat(msg);
else
minutos2 = 0.00;
String msg1 = Utils.calculate(minutos2);
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
String shareBody = String.format("The result is:", msg1);
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Final Result");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share via"));
}
propper wat 是使用全局变量(如前所述)并在调用 vo2maxCalculo 后更新此变量。
另一种方法 - 您可以使用 `resultado5.getText().toString();
从 resultado5 中提取文本
您没有提到,但您可能无法成功实现 onClick 行为?在这种情况下,添加布局 xml 文件 android:onClick="vo2maxCalculo"
和 android:onClick="shareIt"
如果这些方法在其他活动中,您应该在创建时传递意图 activity 或将数据保存在 singleTon 中(仅对大型 havie 单个对象有用,如位图)
最后,在各位的宝贵帮助下,所有问题都解决了,工作代码为:
String msg1; //Like this
public void vo2maxCalculo(View v) {
float minutos2;
double calculo2;
EditText minutos1 = (EditText) findViewById(R.id.minutos);
TextView resultado5 = (TextView) findViewById(R.id.vo2max12Resultado);
minutos2 = Float.parseFloat(minutos1.getText().toString());
calculo2 = 33 + 0.17 * (minutos2 - 1955) / 15;
msg1 = String.format("%.2f", calculo2); //Set it in here like this
resultado5.setText(msg1);
}
public void shareIt(查看 v) {
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
//Can still use it in here as long as the other method got called first
String shareBody = String.format("The result is: %s", msg1);
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Final Result");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share via"));
}
感谢所有花宝贵时间帮助我解决问题的人!
我是 android 开发新手,开始学习一些东西... 我想知道如何实现一件我知道非常基本的事情,但我无法用我对 Android 编程的实际知识找到实现它的方法。现在已经尝试了几个小时,但还是没有结果!我在这里发现了很多关于堆栈溢出的问题,人们问同样的事情,我已经尝试了很多,但终究没有成功!
我写了下面的代码,有 2 个方法(vo2maxCalculo 和 shareIt),"share it" 方法应该从 MSG1 变量中获取值并将这个值插入到 "shareBody" 字符串中,所以用户可以通过电子邮件等方式分享..
我该怎么做?
非常感谢!
public void vo2maxCalculo(View v) {
float minutos2;
double calculo2;
EditText minutos1 = (EditText) findViewById(R.id.minutos);
TextView resultado5 = (TextView) findViewById(R.id.vo2max12Resultado);
minutos2 = Float.parseFloat(minutos1.getText().toString());
calculo2 = 33 + 0.17 * (minutos2 - 1955) / 15;
String msg1 = String.format("%.2f", calculo2);
resultado5.setText(msg1);
}
public void shareIt(View v) {
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
String shareBody = String.format("The result is:", msg1);
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Final Result");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share via"));
}
如果我理解正确,那么这就是解决方案。我也确信几乎所有的编程语言都是这样完成的。
这两种方法似乎都是点击侦听器:仅当它们不是时才使用此方法
public String vo2maxCalculo(View v) { // changed here
float minutos2;
double calculo2;
EditText minutos1 = (EditText) findViewById(R.id.minutos);
TextView resultado5 = (TextView) findViewById(R.id.vo2max12Resultado);
minutos2 = Float.parseFloat(minutos1.getText().toString());
calculo2 = 33 + 0.17 * (minutos2 - 1955) / 15;
String msg1 = String.format("%.2f", calculo2);
resultado5.setText(msg1);
return msg1; // added this
}
public void shareIt(View v) {
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
//String shareBody = String.format("The result is:", vo2maxCalculo(v)); // Why String.format???
String shareBody = "The result is:" + vo2maxCalculo(v); // Replace this
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Final Result");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share via"));
}
这两种方法似乎都是点击侦听器:如果确实如此,请使用此方法
String msg1 = ""; // Added this
public void vo2maxCalculo(View v) {
float minutos2;
double calculo2;
EditText minutos1 = (EditText) findViewById(R.id.minutos);
TextView resultado5 = (TextView) findViewById(R.id.vo2max12Resultado);
minutos2 = Float.parseFloat(minutos1.getText().toString());
calculo2 = 33 + 0.17 * (minutos2 - 1955) / 15;
msg1 = String.format("%.2f", calculo2); // Edited this
resultado5.setText(msg1);
}
其他方法没有变化
像这样在两个作用域之外创建一个变量
String msg1; //Like this
public void vo2maxCalculo(View v) {
float minutos2;
double calculo2;
EditText minutos1 = (EditText) findViewById(R.id.minutos);
TextView resultado5 = (TextView) findViewById(R.id.vo2max12Resultado);
minutos2 = Float.parseFloat(minutos1.getText().toString());
calculo2 = 33 + 0.17 * (minutos2 - 1955) / 15;
msg1 = String.format("%.2f", calculo2); //Set it in here like this
resultado5.setText(msg1);
}
public void shareIt(View v) {
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
//Can still use it in here as long as the other method got called first
String shareBody = String.format("The result is: %s", msg1);
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Final Result");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share via"));
}
这样试试
移动 Activity
onCreate(...)
中所有 widgets
的所有初始化
minutos1 = (EditText) findViewById(R.id.minutos);//declare it globally at class level
resultado5 = (TextView) findViewById(R.id.vo2max12Resultado);//declare it globally at class level
您可以单独创建一个名为 Utils
的 class 并在 Utils class 中创建一个用于计算的静态方法并在两个 onClick
事件中调用它(通过这种方式您可以从任何 class)
public static String calculate(float minutos2) {
double calculo2 = 33 + 0.17 * (minutos2 - 1955) / 15;
String msg1 = String.format("%.2f", calculo2);
return msg1;
}
在 onClick
个 Button 中这样做
public void vo2maxCalculo(View v) {
float minutos2;
String msg = minutos1.getText().toString().trim();
if(msg != null && !msg.equalsIgnoreCase(""))
minutos2 = Float.parseFloat(msg);
else
minutos2 = 0.00;
String msg1 = Utils.calculate(minutos2);
resultado5.setText(msg1);
}
public void shareIt(View v) {
float minutos2;
String msg = minutos1.getText().toString().trim();
if(msg != null && !msg.equalsIgnoreCase(""))
minutos2 = Float.parseFloat(msg);
else
minutos2 = 0.00;
String msg1 = Utils.calculate(minutos2);
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
String shareBody = String.format("The result is:", msg1);
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Final Result");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share via"));
}
propper wat 是使用全局变量(如前所述)并在调用 vo2maxCalculo 后更新此变量。
另一种方法 - 您可以使用 `resultado5.getText().toString();
从 resultado5 中提取文本您没有提到,但您可能无法成功实现 onClick 行为?在这种情况下,添加布局 xml 文件 android:onClick="vo2maxCalculo"
和 android:onClick="shareIt"
如果这些方法在其他活动中,您应该在创建时传递意图 activity 或将数据保存在 singleTon 中(仅对大型 havie 单个对象有用,如位图)
最后,在各位的宝贵帮助下,所有问题都解决了,工作代码为:
String msg1; //Like this
public void vo2maxCalculo(View v) {
float minutos2;
double calculo2;
EditText minutos1 = (EditText) findViewById(R.id.minutos);
TextView resultado5 = (TextView) findViewById(R.id.vo2max12Resultado);
minutos2 = Float.parseFloat(minutos1.getText().toString());
calculo2 = 33 + 0.17 * (minutos2 - 1955) / 15;
msg1 = String.format("%.2f", calculo2); //Set it in here like this
resultado5.setText(msg1);
}
public void shareIt(查看 v) {
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
//Can still use it in here as long as the other method got called first
String shareBody = String.format("The result is: %s", msg1);
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Final Result");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share via"));
}
感谢所有花宝贵时间帮助我解决问题的人!