我目前正在使用android的第一步。我正在開發一個非常簡單的計算器,其中我有兩個活動,一個主要活動和一個結果活動。在這個結果活動中,我有一個返回按鈕,這是他主要的活動。問題是,當我回到主要活動時,我在文本字段上的值仍然存在。我該怎麼做,以便當我從結果活動返回時,主要活動的字段被清除?Android - 重置不同活動的字段
下面是我的主要活動代碼:
public class MainActivity extends Activity implements OnCheckedChangeListener{
private static final int REQUEST_CODE = 1;
private EditText number1, number2;
private Button btn1;
private Intent intent;
private String operation;
private RadioGroup RadioGroupOperation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//faz a ligação entre a aplicação e o layout
number1 = (EditText)findViewById(R.id.editText1);
number2 = (EditText)findViewById(R.id.editText2);
btn1 = (Button)findViewById(R.id.calcular);
intent = new Intent(this, ResultActivity.class);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//insere na intent os dois numeros digitados pelo utilizador
intent.putExtra("number1", number1.getText().toString());
intent.putExtra("number2", number2.getText().toString());
intent.putExtra("operation", operation);
startActivityForResult(intent, REQUEST_CODE);
}
});
RadioGroupOperation = (RadioGroup)findViewById(R.id.radioGroup1);
RadioGroupOperation.setOnCheckedChangeListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch(checkedId){
case R.id.soma:
operation="+";
break;
case R.id.subtracao:
operation="-";
break;
case R.id.multiplicacao:
operation="*";
break;
case R.id.divisao:
operation="/";
break;
}
Toast.makeText(MainActivity.this, operation, Toast.LENGTH_SHORT).show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(resultCode == RESULT_OK && requestCode == REQUEST_CODE){
if(data.hasExtra("result")){
Toast.makeText(this, "O resultado da operação anterior foi:" + data.getExtras().getString("result") , Toast.LENGTH_LONG).show();
}
//testing
/*if(data.hasExtra("number1") && data.hasExtra("number2")){
number1.setText(0);
number2.setText(0);
}*/
//end testing
}
}
}
我的第二個活動(結果):
public class ResultActivity extends Activity {
private TextView textView1;
private Intent intent;
private String number1, number2, operation;
private double result;
private Button btn1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
btn1 = (Button)findViewById(R.id.voltar);
intent = getIntent();
//armazena os numeros digitados
number1 = intent.getStringExtra("number1");
number2 = intent.getStringExtra("number2");
operation = intent.getStringExtra("operation");
//Efectua calculos
try {
if(operation.equals("+"))
result = (Double.parseDouble(number1) + Double.parseDouble(number2));
else if(operation.equals("-"))
result = (Double.parseDouble(number1) - Double.parseDouble(number2));
else if(operation.equals("*"))
result = (Double.parseDouble(number1) * Double.parseDouble(number2));
else if(operation.equals("/"))
result = (Double.parseDouble(number1)/Double.parseDouble(number2));
textView1 = (TextView)findViewById(R.id.textView1);
textView1.setText("O resultado é " + String.valueOf(result));
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
catch(Exception e){
Toast.makeText(this, "Ocorreu um erro!", Toast.LENGTH_SHORT).show();
this.finish();
}
}
@Override
public void finish(){
Intent data = new Intent();
data.putExtra("result", String.valueOf(result));
//testing
//data.putExtra("number1", 0);
//data.putExtra("number2", 0);
//end testing
setResult(RESULT_OK, data);
super.finish();
}
}
我已經嘗試過這樣做,如果你看到//測試之間的塊並且//結束測試,但結果是當我嘗試返回到第一個活動時,我崩潰了該應用程序。
有關我如何做到這一點的任何想法?
由於提前, CT
謝謝您的回答,我會盡快,我可以測試它。 –
這個陳述是不正確的 - 「當你回來的時候,你在onCreate中做的初始化失敗了。」 – San