Как получить данные из 2-го занятия в 1-е занятие - PullRequest
0 голосов
/ 24 июня 2018

my 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 голосов
/ 24 июня 2018

1-е занятие Как получить значение

SharedPreferences sharedPreferences;

sharedPreferences = getSharedPreferences ( "имя_файла", 0);

sharedPreferences.getString ( "KEY", "DefaultValue"); sharedPreferences.getBoolean ( "KEY", ложь);

2-е задание Как установить или поставить значение из действия для получения на другое действие

SharedPreferences sharedPreferences; SharedPreferences.Editor editor;

sharedPreferences = getSharedPreferences ( "имя_файла", 0); редактор = sharedPreferences.edit ();

    editor.putString("KEY","Value");
    editor.putBoolean("KEY",true);
    editor.apply();
0 голосов
/ 24 июня 2018

Вам нужно запустить второе действие, используя 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

...