代码之家  ›  专栏  ›  技术社区  ›  miatech

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

  •  -1
  • miatech  · 技术社区  · 6 年前

    我的mainActivity正在调用第二个活动popupWindow,它包含一个listView。当用户单击ListView时,我需要将该信息返回到第一个活动(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()方法之外。一些教程建议像onActivityResul()一样创建avobe方法,我假设这种情况下它会在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 回复  |  直到 6 年前
        1
  •  3
  •   Tyler V    6 年前

    您需要使用 startActivityForResult(popupWinIntent,1) 而不是 startActivity(popupWinIntent) 并覆盖 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

        2
  •  0
  •   Deven    6 年前

    第一项活动 如何获得价值

    共享参考;

    sharedpreferences=getsharedpreferences(“文件名”,0);

    sharedpreferences.getstring(“key”,“defaultvalue”); sharedPreferences.getBoolean(“键”,false);

    第二项活动 如何设置或放置活动中的值以获取其他活动

    共享参考; sharedpreferences.editor编辑器;

    sharedpreferences=getsharedpreferences(“文件名”,0); editor=sharedPreferences.edit();

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