我刚刚开始Android开发,我遇到了问题。我正在尝试下一件事:
我有一个Activity1,它有一个按钮,“0”。我也有Activity2,它有一个TextView和一个OK按钮。
当我按下“0”时,我想将一些字符串传递给Activity2。
当我按下0时,Activity2必须打开,其中TextView必须显示我传递的字符串。按下OK(在Activity2中)后,我想回到Activity1。
我试图用这种方式做到这一点:
活性1
case R.id.b0:
errorString = "Error: a number can't start with 0";
Bundle basket = new Bundle();
basket.putString("error", errorString);
Intent person = new Intent("my.firsttraining.app.vitali.ERRORPAGE");
person.putExtras(basket);
startActivity(person);
活性2
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
bOK= (Button)findViewById(R.id.bOKonError);
errorDisplay = (TextView)findViewById(R.id.tvError);
bOK.setOnClickListener(this);
setContentView(R.layout.errorpage);
Bundle gotBasket = getIntent().getExtras();
String error = gotBasket.getString("error");
errorDisplay.setText(error); ``
我也尝试过这样的事情:
活性1
case R.id.b0:
errorString = "Error: a number can't start with 0";
basket = new Bundle();
basket.putString("error", errorString);
person = new Intent("my.firsttraining.app.vitali.ERRORPAGE");
person.putExtras(basket);
setResult(RESULT_OK, person);
finish();
活性2
bOK.setOnClickListener(this);
setContentView(R.layout.errorpage);
}
public void onClick(View v)
{
Intent in = new Intent("my.firsttraining.app.vitali.MENU");
startActivity(in);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK)
{
Bundle gotBasket= data.getExtras();
String err = gotBasket.getString("error");
errorDisplay.setText(err);
}
}
毕竟,我有一个错误。单击按钮0后,我的应用程序崩溃。我收到以下错误。
应用程序意外停止。请再试一次
和带有“强制关闭”文字的按钮。
我不得不说我真的不明白第二种选择。我刚刚在一些教程中看到了它。
答案 0 :(得分:1)
在您的Activity2.java中setContentView(R.layout.errorpage);
之后写super.onCreate(savedInstanceState);
,以便视图可以是intit,然后您可以获得按钮表单视图。
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//Just write this line. You it will load view for
//activity and then you can get button from it
setContentView(R.layout.errorpage);
bOK= (Button)findViewById(R.id.bOKonError);
errorDisplay = (TextView)findViewById(R.id.tvError);
bOK.setOnClickListener(this);
Bundle gotBasket = getIntent().getExtras();
String error = gotBasket.getString("error");
errorDisplay.setText(error);