我有一個即將到來的問題是心靈在這個時候關於android應用程序開發的衝刺。如何發送數據從一個活動到另一個沒有創建一個新的意圖Android
在我的應用程序,它的工作方式我想要它,除了一部分我有問題搞清楚是我將如何發送一個數據從一個活動到另一個沒有作出新的意圖。
在我的代碼中,用戶輸入他的名字,質量和高度,當用戶點擊按鈕計算時,它將新的意圖中的所有值都帶到第二個活動,在那裏,它計算出BMI用戶。 現在,我想這個新鮮計算BMI發回的第一個活動,而無需創建一個新的意圖,但我現在如何去說
確定這裏是我的代碼的相關部分
主要Activity.java
package mobileapp.melvin.bmicalculator;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.*;
import android.content.*;
import android.widget.*;
public class MainActivity extends Activity {
public String name,mass,height,bmi;
public EditText nameField, massField, heightField;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bmi = getIntent().getStringExtra("BMI");
//Create "TextFields" By getting ID of Editviews from Main XML
nameField = (EditText) findViewById(R.id.mText_box1);
massField = (EditText) findViewById(R.id.mText_box2);
heightField = (EditText) findViewById(R.id.mText_box3);
//Button To calculate and display BMI as TextViews
Button launchBtn = (Button) findViewById(R.id.mButton_calculate);
launchBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Check is The "Textfields" have values
if(!verifyData()){
return;
}
/*Create a new Intent to Launch another activity
* To display all the Values gotten from
* The TextFields as Normal Text Values
*/
Intent launcher = new Intent(v.getContext(),BMI1.class);
//This intent then passes these values over to the next Intent
launcher.putExtra("Name", name);
launcher.putExtra("Mass", mass);
launcher.putExtra("Height", height);
//We then start this new activity with the new Intent
startActivity(launcher);
}
});
}
和BMI1.java
package mobileapp.melvin.bmicalculator;
import android.app.*;
import android.content.*;
import android.os.*;
import android.view.*;
import android.widget.*;
public class BMI1 extends Activity {
String name,mass,height,bmi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bmi1);
//Get data from the first activity through intent
name = getIntent().getStringExtra("Name");
mass = getIntent().getStringExtra("Mass");
height = getIntent().getStringExtra("Height");
//convert mass and height to double and calculate BMI
double m = Double.parseDouble(mass);
double h = Double.parseDouble(height);
bmi = Double.toString(calculateBMI(m, h));
((TextView) findViewById(R.id.b1_Label2)).setText(name);
((TextView) findViewById(R.id.b1_Label4)).setText(mass);
((TextView) findViewById(R.id.b1_Label6)).setText(height);
((TextView) findViewById(R.id.b1_Label8)).setText(bmi);
Button backBtn = (Button) findViewById(R.id.b1Button_back);
backBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent launcher = getIntent();
launcher.putExtra("BMI", bmi);
finish();
}
});
}
private double calculateBMI(double toMass, double toHeight){
double value;
value = toMass/(toHeight * toHeight);
return value;
}
}
我知道沒有值傳遞,因爲當用戶在第一個Activity中點擊Display時,它會將值顯示到第三個Activity,其中textView應該顯示例如「BMI:20.66」但代之以「BMI :null「,我將如何解決這個錯誤?
不使用任何SharedPreferences/SD卡文件等,使用startActivityForResult()模式 – pskink 2014-11-08 19:30:59
是啊,我只是在搜索@Deminem發佈之前他做了一個編輯,我發現我然後爲我工作 – 2014-11-08 19:37:03
@ProgrammingNewb - 如果這解決你的問題,然後接受幫助社區的答案。快樂的編碼! – Deminem 2014-11-08 20:04:57