我正在尝试开发我的第一个Android应用程序。理论上很简单:用户输入2个值,应用程序进行一些计算,然后在第二个布局中返回一些结果。
这是我的MainActivity。
package domain.com.myapp;
import ...
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
doCalculations();
}
});
}
void doCalculations() {
Log.i("info", "In doCalculations");
// get inputs
final EditText editSPrice = (EditText) findViewById(R.id.editText2);
final EditText editPPrice = (EditText) findViewById(R.id.editText3);
// do calculations
float salePrice = Float.valueOf(editSPrice.getText().toString());
float purchPrice = Float.valueOf(editPPrice.getText().toString());
// set outputs ** this is where I'm stuck!! **
textView9.setText(String.format("%.2f", salePrice));
textView10.setText(String.format("%.2f", purchPrice));
setContentView(R.layout.the_quote);
}
}
问题在于textView9和textView10不在范围内(在第二种布局the_quote中),我不确定要更改什么。
答案 0 :(得分:2)
在您当前的活动中,创建一个新的Intent:
String value="Hello world";
Intent i = new Intent(CurrentActivity.this, NewActivity.class);
i.putExtra("key",value);
startActivity(i);
然后在新的活动中,检索这些值:
Bundle extras = getIntent().getExtras();
if (extras != null) {
String value = extras.getString("key");
}
这是在“活动”之间传递值的方法
答案 1 :(得分:1)
It's Simple use intent to pass value from layout to another
On the sender side, use
Intent myIntent = new Intent(A.this, B.class);
myIntent.putExtra("intVariableName", intValue);
startActivity(myIntent);
On the receiver side, use
Intent mIntent = getIntent();
int intValue = mIntent.getFloatExtra("intVariableName");
答案 2 :(得分:1)
在Android中将值传递给第二个activity
,您可以简单地使用putExtra
方法。
在您的第一个活动中添加:
Intent i = new Intent(getApplicationContext(), Activity.class);
i.putExtra("name", value);
startActivity(I);
在第二个活动中得到它:
String s = getIntent().getStringExtra("name");
答案 3 :(得分:1)
如果要使用setContentView(...)更改布局,则需要再次在其中初始化视图。
但是您现在也可以尝试以下解决方案,
void doCalculations() {
Log.i("info", "In doCalculations");
// get inputs
final EditText editSPrice = (EditText) findViewById(R.id.editText2);
final EditText editPPrice = (EditText) findViewById(R.id.editText3);
// do calculations
float salePrice = Float.valueOf(editSPrice.getText().toString());
float purchPrice = Float.valueOf(editPPrice.getText().toString());
Intent i = new Intent(CurrentActivity.this, NewActivity.class);
i.putExtra("salePrice",salePrice);
i.putExtra("purchPrice",purchPrice);
startActivity(i);
//setContentView(R.layout.the_quote);
// Find your view again from updated layout...
//final TextView textView9 = (TextView) findViewById(R.id.textView9);
//final TextView textView10 = (TextView) findViewById(R.id.textView10);
//textView9.setText(String.format("%.2f", salePrice));
//textView10.setText(String.format("%.2f", purchPrice));
}
然后在第二个活动中按如下所示在onCreate方法中检索
final TextView textView9 = (TextView) findViewById(R.id.textView9);
final TextView textView10 = (TextView) findViewById(R.id.textView10);
Bundle extras = getIntent().getExtras();
if (extras != null) {
Float salePrice = extras.getFloat("salePrice");
Float purchPrice = extras.getFloat("purchPrice");
textView9.setText(String.format("%.2f", salePrice));
textView10.setText(String.format("%.2f", purchPrice));
}