繁体   English   中英

Android上的startActivityForResult

[英]startActivityForResult on Android

我正在尝试使用startActivityForResult开发一些非常基本的代码,但我总是遇到一个烦人的问题:从主活动(仅包含一个“ hello word” editText)中,我调用了一个新活动,该活动仅包含一个TextView,一个空的listView和一个ImageButton。 当我单击ImageButton时,它想向我的mainActivity返回一个“ ok”,并将其打印到“ hello word” editText中,但是什么也没有发生。 我已经阅读了有关如何使用“ StartActivity for result”的所有主题,但没有发现任何帮助。请帮助我。

我的代码如下:

主要活动

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

在您的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();

希望它能对您有所帮助。

暂无
暂无

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

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