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

..或者你可以简单地实现了具有存储要传递的价值静态方法的实用工具类活动之间。