简体   繁体   English

Android上的startActivityForResult

[英]startActivityForResult on Android

I'm trying to develope some very basic code using startActivityForResult and I am always getting an annoying problem : from the main activity (contains only a "hello word" editText) I call a new activity which contains only a TextView, an empty listView and an ImageButton. 我正在尝试使用startActivityForResult开发一些非常基本的代码,但我总是遇到一个烦人的问题:从主活动(仅包含一个“ hello word” editText)中,我调用了一个新活动,该活动仅包含一个TextView,一个空的listView和一个ImageButton。 When I click on the ImageButton it supposes to return "ok" inside an intent to my mainActivity and print it into the "hello word" editText but nothing happens. 当我单击ImageButton时,它想向我的mainActivity返回一个“ ok”,并将其打印到“ hello word” editText中,但是什么也没有发生。 I already have read all the threads on how to use "StartActivity for result" but I found nothing helpful.Please help me. 我已经阅读了有关如何使用“ StartActivity for result”的所有主题,但没有发现任何帮助。请帮助我。

My Code below is: 我的代码如下:

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: 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();
        }
    });
}
}

in your MainActivity change: 在您的MainActivity更改中:

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

to

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

and in your DeviceListActivity replace your code with: 并在DeviceListActivity中将代码替换为:

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

Hope it will help you out. 希望它能对您有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM