2016-10-11 2 views
-2

Я просматривал много других ответов, причем наиболее полным является этот ответ: Sending data back to the Main Activity in android. Следуя этим, я могу, я не вижу никаких данных, когда пытаюсь получить строку из возвращаемого намерения.Данные о намерениях не возвращаются

Это основное действие, которое вызывает второе действие с помощью startActivityForRestult() и затем отображает строку из намерения в текстовом виде.

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     Bundle extras = getIntent().getExtras(); 
     if (extras != null) { 
      String myStr = extras.getString("TASK"); 
      TextView tv = (TextView) findViewById(R.id.taskList); 
      tv.setText(myStr); 
     } 

    }//onActivityResult 

    /** Called when the user clicks the Add Task button */ 
    public void addTask(View view) { 
     Intent intent = new Intent(this, AddTaskActivity.class); 
     startActivityForResult(intent, 1); 
    } 
} 

И второе действие, которое я пытаюсь вернуть заданию переменной строки в основное действие. код обрезается до только секции намерения возвращения:

String task = "foo"; 

Intent returnIntent = getIntent(); 
returnIntent.putExtra("TASK", task); 
setResult(Activity.RESULT_OK,returnIntent); 
finish(); 

Из всего, что я читал, это должно быть все, что связано, но я что-то пропустил, так как ничто не появляется в первой деятельности, и я неясно Зачем.

ответ

1

Используйте намерение, переданное в onActivityResult, как данные в вашем примере, а не getIntent, который получает намерение, переданное при создании действия.

I.E.

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
     Bundle extras = data.getExtras(); //THIS IS THE LINE I CHANGED 
     if (extras != null) { 
      String myStr = extras.getString("TASK"); 
      TextView tv = (TextView) findViewById(R.id.taskList); 
      tv.setText(myStr); 
     } 
}//onActivityResult 
0

В методе onActivityResult() вы не получили данные с помощью метода getIntent().

метод onActivityResult() имеет 3 аргумента.

  1. Код запроса передан методу startActivityForResult().

  2. Код результата, указанный вторым действием. Это либо RESULT_OK, если операция была успешной, либо RESULT_CANCELED, если пользователь отказался или операция по какой-то причине потерпела неудачу.

  3. Цель, которая несет данные о результатах.

Итак, из третьего аргумента вы можете получить данные.

Смежные вопросы