如何在两个活动之间传递字符串

时间:2012-02-01 20:22:04

标签: android

我刚刚开始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后,我的应用程序崩溃。我收到以下错误。

  

应用程序意外停止。请再试一次

和带有“强制关闭”文字的按钮。

我不得不说我真的不明白第二种选择。我刚刚在一些教程中看到了它。

1 个答案:

答案 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);