对于返回值android的意图的最佳实践

时间:2014-06-07 09:25:25

标签: java android android-intent

我有2个活动,一个是练习数据库,另一个是新的练习创建者

在这个函数中我创建了一个新类的练习,我想将新类返回给 数据库活动。

并且在创建新练习时删除此活动并创建一个新活动,该活动将创建一个新的练习类。

public void onClickDone(View view)
{
    EditText editText = (EditText) findViewById(R.id.edit_name);
    String name = editText.getText().toString();
    editText = (EditText) findViewById(R.id.edit_description);
    String description = editText.getText().toString();
    editText = (EditText) findViewById(R.id.edit_reptitons);
    EditText editSets = (EditText) findViewById(R.id.edit_sets);
    EditText editTimeBetweenSets = (EditText) findViewById(R.id.edit_time_between_sets_);
    int reptitons = 0 ;
    int sets = 0 ;
    int timeBetweenSets = 0;
    try
    {
        reptitons = Integer.parseInt(editText.getText().toString());
        sets = Integer.parseInt(editSets.getText().toString());
        timeBetweenSets = Integer.parseInt(editTimeBetweenSets.getText().toString());
    }
    catch(NumberFormatException ex)
    {
        AlertDialog.Builder dlgAlert  = new AlertDialog.Builder(this);

        dlgAlert.setMessage("please check you input");
        dlgAlert.setTitle("Wrong Input");
        dlgAlert.setPositiveButton("OK", null);
        dlgAlert.setCancelable(true);
        dlgAlert.create().show();
    }
    _excercise = new Exercise(name, description, reptitons, sets, timeBetweenSets);
}

创建课程时,2个活动的最佳做法是什么,将其保存到列表中并在再次按下“创建新练习按钮”时创建新课程?

或者我应该在add exercise activity中创建类的实例?

2 个答案:

答案 0 :(得分:1)

首先,你要创建的是对象,而不是类。

您可以使用finish();停止活动,这会让您返回之前的活动。

如果您希望第二个活动将数据发送到第一个活动,可以查看startActivityForResult。查看this主题。

答案 1 :(得分:1)

从FirstActivity使用startActivityForResult()方法调用SecondActivity

例如:

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);

在SecondActivity中设置要返回FirstActivity的数据。如果您不想退回,请不要设置任何内容。

例如:

在secondActivity中,如果要发回数据:

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(RESULT_OK,returnIntent);
finish();

如果您不想返回数据:

Intent returnIntent = new Intent();
setResult(RESULT_CANCELED, returnIntent);
finish();

现在,在您的FirstActivity类中,编写onActivityResult()方法的以下代码。

protected void onActivityResult(int requestCode,int resultCode,Intent data)

{

    if (requestCode == 1) {
        if(resultCode == RESULT_OK){
            String result=data.getStringExtra("result");
        }
        if (resultCode == RESULT_CANCELED) {
            //Write your code if there's no result
        }
    }
}//onActivityResult