2016-09-14 4 views
0

Я пытаюсь разработать очень простой код, используя startActivityForResult, и я всегда получаю раздражающую проблему: из основного действия (содержит только «hello word» editText) Я вызываю новое действие, которое содержит только TextView, пустой ListView и ImageButton. Когда я нажимаю на ImageButton, он должен возвращать «ok» внутри намерения моей основной функции и печатать его в «hello word» editText, но ничего не происходит. Я уже прочитал все темы о том, как использовать «StartActivity для результата», но я не нашел ничего полезного. Пожалуйста, помогите мне.startActivityForResult на Android

Мой код ниже:

MainActivity

public class MainActivity extends AppCompatActivity { 

    TextView hw; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     hw = (TextView) findViewById(R.id.hw); 
     hw.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(getApplicationContext(),DeviceListActivity.class); 
       int resultCode = -1; 
       startActivityForResult(intent,resultCode); 
      } 
     }); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

     if (requestCode == 1) { 
      if(resultCode == Activity.RESULT_OK){ 
       String result=data.getStringExtra("result"); 
       hw.setText(result); 

      } 
      if (resultCode == Activity.RESULT_CANCELED) { 
       //Write your code if there's no result 
      } 
     } 
    } 
    } 

DeviceListActivity:

public class DeviceListActivity extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.device_list); 

    final ImageButton nextBtn = (ImageButton) findViewById(R.id.nextBtn); 
    nextBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent returnIntent = new Intent(); 
      String result = "Tout va bien!"; 
      returnIntent.putExtra("result",result); 
      onActivityResult(1,1,returnIntent); 
      setResult(Activity.RESULT_OK, returnIntent); 
      finish(); 
     } 
    }); 
} 
} 
+0

попробовать http://www.javatpoint.com/android-startactivityforresult-example –

+0

удалить onActivityResult (1,1, returnIntent); из DeviceListActivity –

+0

Всего 2 вещи достаточно..изменить ** onActivityResult (1,1, returnIntent); ** из DeviceListActivity и заменить ** int resultCode = -1; ** с ** int resultCode = 1; ** в MainActivity –

ответ

0

в вашем изменении MainActivity:

Intent intent = new Intent(getApplicationContext(),DeviceListActivity.class); 
int resultCode = -1; 
startActivityForResult(intent,resultCode); 

в

Intent intent = new Intent(getApplicationContext(),DeviceListActivity.class); 
int resultCode = 1; 
startActivityForResult(intent,resultCode); 

и в вашем DeviceListActivity заменить код:

Intent returnIntent = new Intent(); 
     String result = "Tout va bien!"; 
     returnIntent.putExtra("result",result); 
     setResult(Activity.RESULT_OK, returnIntent); 
     finish(); 

Надеется, что это поможет вам.

+0

Отлично, это работает. Я чувствую себя таким глупым сейчас. Я думаю, что это было первое значение «resultCode», которое делало все неправильно! Спасибо большое :) – badr

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