2012-02-01 4 views
0

Я только начинаю с разработки Android, и у меня есть проблема. Я пытаюсь сделать следующее:Как передать строку между двумя действиями

У меня есть Activity1, у которого есть кнопка «0». Также у меня есть Activity2, у которого есть TextView и кнопка OK.

Когда я нажимаю на «0», я хочу передать некоторую строку в Activity2.

Когда я нажимаю 0, Activity2 должен открыть, и в нем TextView должен показать строку, которую я передал. После нажатия OK (в Activity2), я хочу вернуться к Activity1.

Я пытался сделать это таким образом:

Activity1

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); `` 

Я также пытался сделать что-то вроде этого:

Activity1

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 мое приложение аварийно завершает работу. Я получаю следующую ошибку.

Приложение неожиданно остановилось. Повторите попытку

и кнопка с текстом «Force Close».

Должен сказать, что я не совсем понимаю второй вариант. Я просто видел это в каком-то учебнике.

+0

Пожалуйста, разместите вывод логарифма для сбоя. –

ответ

1

В вашей Деятельности2.java напишите setContentView(R.layout.errorpage); после super.onCreate(savedInstanceState);, чтобы можно было взглянуть на объект, а затем вы можете получить представление формы кнопки.

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); 
+0

Большое спасибо, так что теперь я понимаю, что такое правильный порядок в коде, и это очень важно. –