2016-09-14 76 views
0

我想开发一些非常基本的代码,使用startActivityForResult,我总是得到一个恼人的问题:从主要活动(只包含一个“你好单词”editText)我打电话一个新的活动,其中只包含一个TextView,一个空的listView和一个ImageButton。当我点击ImageButton时,它假设在我的mainActivity中意图返回“ok”并将其打印到“hello word”editText中,但没有任何反应。我已经阅读了关于如何使用“StartActivity for result”的所有主题,但我没有发现任何有用的信息。请帮助我。下面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

remove onActivityResult(1,1,returnIntent);从DeviceListActivity –

+0

只需要2件事..从DeviceListActivity删除** onActivityResult(1,1,returnIntent); **并将** 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