2012-08-22 119 views
1

我試圖讓我的Android項目通過編輯文本區域檢索用戶數字。這可能已經完全在我的代碼中完成。我不知道如何在方程中使用捕獲的數據,並通過文本框將結果顯示在屏幕上的第二個活動中。該解決方案可能比目前似乎更簡單。讓我知道你是否想要更多細節和信息。在活動之間檢索Android數據

第一項活動:

package com.klinetel.bac.calculator; 

import android.os.Bundle; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.view.View; 
import android.widget.*; 
import android.content.*; 


public class MainActivity extends Activity { 

RadioGroup group1; 
RadioButton maleRadio, femaleRadio; 
// Button button = (Button)findViewById(R.id.button1); 

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

    AlertDialog.Builder alert = new AlertDialog.Builder(this); 
    alert.setTitle("The Result"); 
    alert.setMessage("Your Blood Alcohol Content Percentage is:"); 
    alert.setPositiveButton("OK", null); 
    alert.create().show(); 


Button button = (Button)findViewById(R.id.button1); 
button.setOnClickListener(new View.OnClickListener(){ 

    @Override 
    public void onClick(View view) 
    { 
     Intent intent = new Intent(view.getContext(),ResultsActivity.class); 
     startActivityForResult(intent,0); 
     finish(); 

    } 

}); 
} 



//Input conversion-to-string-attributes 
public void calcBAC(){ 

    //weight 
    EditText editWeight = (EditText)findViewById(R.id.editText1); 
    double weight = Double.parseDouble(editWeight.getText().toString()); 

    //hours 
    EditText editHours = (EditText)findViewById(R.id.editText2); 
    double hours = Double.parseDouble(editHours.getText().toString()); 

    //drinks 
    EditText editDrinks = (EditText)findViewById(R.id.editText3); 
    double drinks = Double.parseDouble(editDrinks.getText().toString()); 

    //radio buttons 
    maleRadio=(RadioButton)findViewById(R.id.radio0); 

    femaleRadio=(RadioButton)findViewById(R.id.radio1); 


    //bac total 
    double resultBAC=0; 

    //male formula 
    if(maleRadio.isChecked()){ 

     resultBAC=(((EQUATION HERE))/2; 

    } 
    //female formula 
    else if(femaleRadio.isChecked()){ 

     resultBAC=(((EQUATION HERE))/2; 
    } 

} 


} 

次活動:

package com.klinetel.bac.calculator; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.*; 
import android.widget.*; 
import android.content.Intent; 


public class ResultsActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_results); 


TextView result; 

Button button = (Button)findViewById(R.id.backButton); 

button.setOnClickListener(new View.OnClickListener(){ 

    @Override 
    public void onClick(View view) 
    { 
     Intent intent = new Intent(view.getContext(),MainActivity.class); 
     startActivityForResult(intent,0); 
     finish(); 

    } 


}); 
result=(TextView)findViewById(R.id.textView1); 
//result=resultBAC.getValue; 
} 
} 
+0

以及如何在計算後在文本框中顯示數據? – Klinetel

回答

4

您可以使用Extra來將數據傳遞給第二個活動。您可以單值通關的意圖,或者如果你有很多不同的數據值,以

活動

之間通過關於第一個活動,你可以通關了「捆綁」加入以下內容:

Intent intent = new Intent(view.getContext(),ResultsActivity.class); 
intent.putExtra("extraname", "extravalue"); 
intent.putExtra("extraname2", 9.99); 
startActivityForResult(intent,0); 
finish(); 

然後在您接收活動

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_results); 
String extra = getIntent().getStringExtra("extraname") //returns null if nothing 
Double extra2 = getIntent().getDoubleExtra("extraname2") 

+0

我對Android比較陌生,什麼是「外部名稱」和「額外值」?另外,當我在getDoubleExtra中使用extraname2時,出現錯誤。可能是因爲這是樣本數據。在此之後,我將如何在文本框中顯示公式答案?謝謝 – Klinetel

+1

我忘了getDoubleExtra需要兩個參數..鍵名和默認值。嘗試getIntent()。getDoubleExtra(「extraname2」,0.00) 這種情況下的extraname和extravalue只是extras工作方​​式的例子。 extraname是額外的「keyname」,extravalue只是字符串extra的值。在進行計算的活動中,您將擁有體重,小時數和飲料的全局變量,並在onStart期間使用getDoubleExtra(或任何類型)來抓取它。然後,當您執行計算時,請參考全局變量。 – ainesophaur

1

您可以使用'Bundle'類在活動之間共享數據。你可以這樣做,例如:

Bundle extras = getIntent().getExtras(); 
if (extras != null) 
{ 
    username = extras.getString("username"); 
    password = extras.getString("password"); 
} 
0

..或者你可以簡單地實現了具有存儲要傳遞的價值靜態方法的實用工具類活動之間。