如何从第二活动到第一活动获取数据

时间:2018-06-24 02:13:01

标签: java android android-intent android-activity

我的MainActivity正在调用第二个活动PopupWindow,其中包含一个列表视图。当用户单击列表视图时,我需要将该信息返回到第一个活动(MainActivity)。因此在MainActivity中,我有这两种方法。第一个方法调用第二个活动,第二个从第二个活动获取结果

 //event listener for authors list menu (popup window)
        authorListImageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent popupWinIntent = new Intent(getBaseContext(), AuthorsPopup.class);
                popupWinIntent.putExtra("allauthors", allAuthors);
                startActivity(popupWinIntent);
            }
        });    

    //fetching result -- author from AuthorsPopup activity back
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == 1) {
                if(resultCode == RESULT_OK) {
                    String author = data.getStringExtra("author");
                    Log.v("author ", author);
                }
            }
        }

此方法在onCreate()方法之外。一些教程建议创建avobe方法,就像onActivityResul()一样,我假设这种情况将在onCreate()方法内部。我的是一个方法声明。如此执着地不执行。在我的第二项活动中。我有这个

//event listener for authros listview
        authorListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> paren, View view, int position, long id) {
//                Log.v("author: ", authorsList[position]);
                String author = authorsList[position];
                Intent returnResultIntent = new Intent(getBaseContext(),  MainActivity.class);
                returnResultIntent.putExtra("author", author);
                setResult(RESULT_OK, returnResultIntent);
                finish();
            }
        });

从第二个活动中取回数据的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

您需要使用startActivityForResult(popupWinIntent,1)而不是startActivity(popupWinIntent)启动第二个活动,并在第一个Activity中覆盖onActivityResult方法,如下所示:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1) {
        if(resultCode == Activity.RESULT_OK){
            String result=data.getStringExtra("author");
        }
    }
}

您列出的第一个authorListImageView.setOnClickListener代码将放入onCreate

答案 1 :(得分:0)

第一个活动 如何获得价值

SharedPreferences sharedPreferences;

sharedPreferences = getSharedPreferences(“ FileName”,0);

sharedPreferences.getString(“ KEY”,“ DefaultValue”); sharedPreferences.getBoolean(“ KEY”,false);

第二活动 如何设置或放置活动中的值以进行其他活动

SharedPreferences sharedPreferences; SharedPreferences.Editor编辑器;

sharedPreferences = getSharedPreferences(“ FileName”,0); editor = sharedPreferences.edit();

    editor.putString("KEY","Value");
    editor.putBoolean("KEY",true);
    editor.apply();