Java 如何在FragmentPagerAdapter中的片段之间传递数据

Java 如何在FragmentPagerAdapter中的片段之间传递数据,java,android,android-fragments,fragmentpageradapter,Java,Android,Android Fragments,Fragmentpageradapter,对于我的学术项目,我想创建一个包含4个选项卡的应用程序。第一个将显示最近添加到列表中的游戏,第二个将是搜索表单,第三个将显示搜索结果,最后一个将显示详细信息。我目前已经为TabView和4个选项卡创建了代码。问题是,我想执行搜索,以获取符合片段2上搜索条件的列表中的项目,但我不知道如何将数据从片段2(textView数据和微调器)传递到片段3。我的代码如下: MainActivity.java: import android.os.Bundle; import android.support.d

对于我的学术项目,我想创建一个包含4个选项卡的应用程序。第一个将显示最近添加到列表中的游戏,第二个将是搜索表单,第三个将显示搜索结果,最后一个将显示详细信息。我目前已经为
TabView
和4个选项卡创建了代码。问题是,我想执行搜索,以获取符合片段2上搜索条件的列表中的项目,但我不知道如何将数据从片段2(textView数据和微调器)传递到片段3。我的代码如下:

MainActivity.java

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.design.widget.TabLayout;
import android.view.MenuInflater;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.widget.Button;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setImageResource(R.drawable.ic_search_white_24dp);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
            }
        });

        //TabLayout function call
        configureTabLayout();

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    }

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()){
            case R.id.menu_exit:
                finish();
                return true;
            case R.id.menu_settings:
                Toast.makeText(this, "Under Construction", Toast.LENGTH_LONG).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();

        if (id == R.id.nav_camera) {
            // Handle the camera action
        } else if (id == R.id.nav_gallery) {

        } else if (id == R.id.nav_slideshow) {

        } else if (id == R.id.nav_manage) {

        } else if (id == R.id.nav_share) {

        } else if (id == R.id.nav_send) {

        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }




    //Tab Layout function declaration
    private void configureTabLayout() {

        //Getting the tab layout
        TabLayout tabLayout = findViewById(R.id.tab_layout);

        //Adding Tabs
        tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_home_white_24dp));
        tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_search_white_24dp));
        tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_results_white_24dp));
        tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_details_white_24dp));


        //The TabPagerAdapter instance is then
        //assigned as the adapter for the ViewPager and the TabLayout component added
        //to the page change listener
        final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
        final PagerAdapter adapter = new TabPagerAdapter
            (getSupportFragmentManager(), tabLayout.getTabCount());
        viewPager.setAdapter(adapter);


        //Finally, the onTabSelectedListener is configured on the TabLayout instance and
        //the onTabSelected() method implemented to set the current page on the
        //ViewPager based on the currently selected tab number.
        viewPager.addOnPageChangeListener(new     TabLayout.TabLayoutOnPageChangeListener(tabLayout));
        tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());
            }
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
            }
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
            }
        });
    }
}
TabPagerAdapter.java

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class TabPagerAdapter extends FragmentPagerAdapter{

    int tabCount;

    public TabPagerAdapter(FragmentManager fm, int numberOfTabs) {
        super(fm);
        this.tabCount = numberOfTabs;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new HomeScreenFragment();
            case 1:
                return new SearchFormFragment();
            case 2:
                return new SearchResultsFragment();
            case 3:
                return new DetailsScreenFragment();
            default:
                return null;
        }
    }
    @Override
    public int getCount() {
        return tabCount;
    }
}
package gr.pliroforiki_edu.videogamedb;


import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;


/**
 * A simple {@link Fragment} subclass.
 */
public class SearchFormFragment extends Fragment {

    private Button searchButton;
    private EditText gameTitleEditText;

    Spinner spinnerGenre;



    public SearchFormFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(final LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

        View searchFormView = inflater.inflate(R.layout.fragment_search_form, container, false);

        searchButton = searchFormView.findViewById(R.id.searchButton);
        gameTitleEditText = searchFormView.findViewById(R.id.game_title_editText);
        spinnerGenre = searchFormView.findViewById(R.id.genre_spinner);

        ArrayAdapter<CharSequence> genreAdapter = ArrayAdapter.createFromResource(
            getActivity(),
            R.array.game_genres,
            android.R.layout.simple_spinner_item
        );

        genreAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerGenre.setAdapter(genreAdapter);


        searchButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String filterGameTitle = gameTitleEditText.getText().toString();
                int filterGenreId = spinnerGenre.getSelectedItemPosition();

                String message = String.format("Game Title: %s\n Genre: %s", filterGameTitle, filterGenreId);
                Toast.makeText(getActivity(),message, Toast.LENGTH_LONG).show();

            }
        });

        // Inflate the layout for this fragment
        //return inflater.inflate(R.layout.fragment_search_form, container, false);
        return searchFormView;

    }

}
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;


/**
 * A simple {@link Fragment} subclass.
 */
public class SearchResultsFragment extends Fragment {

    TextView infoTextView;
    ListView listViewGames;




    public SearchResultsFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

        View searchResultsView = inflater.inflate(R.layout.fragment_search_results, container, false);



        return searchResultsView;
    }

    private void findViews()
    {
        infoTextView = getActivity().findViewById(R.id.info_textView);
        listViewGames = getActivity().findViewById(R.id.games_listView);
    }


}
SearchFormFragment.java

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class TabPagerAdapter extends FragmentPagerAdapter{

    int tabCount;

    public TabPagerAdapter(FragmentManager fm, int numberOfTabs) {
        super(fm);
        this.tabCount = numberOfTabs;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new HomeScreenFragment();
            case 1:
                return new SearchFormFragment();
            case 2:
                return new SearchResultsFragment();
            case 3:
                return new DetailsScreenFragment();
            default:
                return null;
        }
    }
    @Override
    public int getCount() {
        return tabCount;
    }
}
package gr.pliroforiki_edu.videogamedb;


import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;


/**
 * A simple {@link Fragment} subclass.
 */
public class SearchFormFragment extends Fragment {

    private Button searchButton;
    private EditText gameTitleEditText;

    Spinner spinnerGenre;



    public SearchFormFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(final LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

        View searchFormView = inflater.inflate(R.layout.fragment_search_form, container, false);

        searchButton = searchFormView.findViewById(R.id.searchButton);
        gameTitleEditText = searchFormView.findViewById(R.id.game_title_editText);
        spinnerGenre = searchFormView.findViewById(R.id.genre_spinner);

        ArrayAdapter<CharSequence> genreAdapter = ArrayAdapter.createFromResource(
            getActivity(),
            R.array.game_genres,
            android.R.layout.simple_spinner_item
        );

        genreAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerGenre.setAdapter(genreAdapter);


        searchButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String filterGameTitle = gameTitleEditText.getText().toString();
                int filterGenreId = spinnerGenre.getSelectedItemPosition();

                String message = String.format("Game Title: %s\n Genre: %s", filterGameTitle, filterGenreId);
                Toast.makeText(getActivity(),message, Toast.LENGTH_LONG).show();

            }
        });

        // Inflate the layout for this fragment
        //return inflater.inflate(R.layout.fragment_search_form, container, false);
        return searchFormView;

    }

}
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;


/**
 * A simple {@link Fragment} subclass.
 */
public class SearchResultsFragment extends Fragment {

    TextView infoTextView;
    ListView listViewGames;




    public SearchResultsFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

        View searchResultsView = inflater.inflate(R.layout.fragment_search_results, container, false);



        return searchResultsView;
    }

    private void findViews()
    {
        infoTextView = getActivity().findViewById(R.id.info_textView);
        listViewGames = getActivity().findViewById(R.id.games_listView);
    }


}
我想通过片段归档以下内容:

ListActivity.java

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;


public class ListActivity extends AppCompatActivity {

private TextView textViewInfo;
private ListView listViewBooks;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list);

    // Animation when this Activity appears
    overridePendingTransition(R.anim.pull_in_from_right, R.anim.hold);

    // Get user filters from Intent
    Intent intent = getIntent();

    String filterAuthor = intent.getStringExtra("AUTHOR");
    String filterTitle = intent.getStringExtra("TITLE");
    int filterGenreId = intent.getIntExtra("GENREID", 0);

    findViews();

    // Show user filters for information
    String message = String.format("Author: %s\nTitle: %s\nGenreId: %d",
            filterAuthor, filterTitle, filterGenreId);
    textViewInfo.setText(message);

    DataStore.LoadBooks(filterAuthor, filterTitle, filterGenreId);

    //Complex Object Binding
    ListAdapter booksAdapter = new SimpleAdapter(
            this,
            DataStore.Books,
            R.layout.list_item,
            new String[]{DataStore.KEY_TITLE, DataStore.KEY_AUTHOR, DataStore.KEY_GENRENAME},
            new int[]{R.id.book_item_title, R.id.book_item_author, R.id.book_item_genre}
    );

    listViewBooks.setAdapter(booksAdapter);

    listViewBooks.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent detailsIntent = new Intent(ListActivity.this, DetailsActivity.class);
            detailsIntent.putExtra(DataStore.KEY_POSITION, position);
            startActivity(detailsIntent);
        }
    });
}

@Override
protected void onPause(){
    overridePendingTransition(R.anim.hold, R.anim.push_out_to_right);
    super.onPause();
}

private void findViews(){
    textViewInfo = findViewById(R.id.textViewInfo);
    listViewBooks = findViewById(R.id.listViewBooks);
}


}
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;



public class MainActivity extends AppCompatActivity {

private EditText textAuthor;
private EditText textTitle;
private EditText textGenre;
private Button buttonSearch;
private Spinner spinnerGenre;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    DataStore.Init(getApplicationContext());

    textAuthor = findViewById(R.id.editTextAuthor);
    textTitle= findViewById(R.id.editTextAuthor);
    buttonSearch = findViewById(R.id.buttonSearch);
    spinnerGenre = (Spinner) findViewById(R.id.spinnerGenre);

    ArrayAdapter<CharSequence> genreAdapter = ArrayAdapter.createFromResource(
            this,
            R.array.book_genres,
            android.R.layout.simple_spinner_item
    );

    genreAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerGenre.setAdapter(genreAdapter);

    buttonSearch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String filterAuthor = textAuthor.getText().toString();
            String filterTitle = textTitle.getText().toString();
            int filterGenreId = spinnerGenre.getSelectedItemPosition();

            Intent intent = new Intent(MainActivity.this, ListActivity.class);
            intent.putExtra("AUTHOR", filterAuthor);
            intent.putExtra("TITLE", filterTitle);
            intent.putExtra("GENREID", filterGenreId);
            startActivity(intent);
        }
    });
}
}
导入android.content.Intent;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ListAdapter;
导入android.widget.ListView;
导入android.widget.simpledapter;
导入android.widget.TextView;
公共类ListActivity扩展了AppCompatActivity{
私有文本视图文本视图信息;
私有ListView listViewBooks;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_列表);
//此活动出现时的动画
覆盖转换(R.anim.pull_in_from_right,R.anim.hold);
//从Intent获取用户筛选器
Intent=getIntent();
String filterAuthor=intent.getStringExtra(“作者”);
String filterTitle=intent.getStringExtra(“标题”);
int filterGenreId=intent.getIntExtra(“GENREID”,0);
FindView();
//显示信息的用户筛选器
String message=String.format(“作者:%s\n标题:%s\n标题:%d”,
filterAuthor、filterTitle、filterGenreId);
textViewInfo.setText(消息);
数据存储。负荷书(filterAuthor、filterTitle、filterGenreId);
//复杂对象绑定
ListAdapter booksAdapter=新SimpleAdapter(
这
数据存储,书籍,
R.layout.list_项目,
新字符串[]{DataStore.KEY\u TITLE,DataStore.KEY\u AUTHOR,DataStore.KEY\u GENRENAME},
新int[]{R.id.book\u item\u title,R.id.book\u item\u author,R.id.book\u item\u genre}
);
setAdapter(booksAdapter);
listViewBooks.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Intent detailsinent=新意图(ListActivity.this,DetailsActivity.class);
detailsinent.putExtra(DataStore.KEY\u位置,位置);
起始触觉(细节);
}
});
}
@凌驾
受保护的void onPause(){
覆盖过渡(R.anim.hold,R.anim.push\u out\u向右);
super.onPause();
}
私有void findViews(){
textViewInfo=findViewById(R.id.textViewInfo);
listViewBooks=findViewById(R.id.listViewBooks);
}
}
Mainactivity.java

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;


public class ListActivity extends AppCompatActivity {

private TextView textViewInfo;
private ListView listViewBooks;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list);

    // Animation when this Activity appears
    overridePendingTransition(R.anim.pull_in_from_right, R.anim.hold);

    // Get user filters from Intent
    Intent intent = getIntent();

    String filterAuthor = intent.getStringExtra("AUTHOR");
    String filterTitle = intent.getStringExtra("TITLE");
    int filterGenreId = intent.getIntExtra("GENREID", 0);

    findViews();

    // Show user filters for information
    String message = String.format("Author: %s\nTitle: %s\nGenreId: %d",
            filterAuthor, filterTitle, filterGenreId);
    textViewInfo.setText(message);

    DataStore.LoadBooks(filterAuthor, filterTitle, filterGenreId);

    //Complex Object Binding
    ListAdapter booksAdapter = new SimpleAdapter(
            this,
            DataStore.Books,
            R.layout.list_item,
            new String[]{DataStore.KEY_TITLE, DataStore.KEY_AUTHOR, DataStore.KEY_GENRENAME},
            new int[]{R.id.book_item_title, R.id.book_item_author, R.id.book_item_genre}
    );

    listViewBooks.setAdapter(booksAdapter);

    listViewBooks.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent detailsIntent = new Intent(ListActivity.this, DetailsActivity.class);
            detailsIntent.putExtra(DataStore.KEY_POSITION, position);
            startActivity(detailsIntent);
        }
    });
}

@Override
protected void onPause(){
    overridePendingTransition(R.anim.hold, R.anim.push_out_to_right);
    super.onPause();
}

private void findViews(){
    textViewInfo = findViewById(R.id.textViewInfo);
    listViewBooks = findViewById(R.id.listViewBooks);
}


}
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;



public class MainActivity extends AppCompatActivity {

private EditText textAuthor;
private EditText textTitle;
private EditText textGenre;
private Button buttonSearch;
private Spinner spinnerGenre;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    DataStore.Init(getApplicationContext());

    textAuthor = findViewById(R.id.editTextAuthor);
    textTitle= findViewById(R.id.editTextAuthor);
    buttonSearch = findViewById(R.id.buttonSearch);
    spinnerGenre = (Spinner) findViewById(R.id.spinnerGenre);

    ArrayAdapter<CharSequence> genreAdapter = ArrayAdapter.createFromResource(
            this,
            R.array.book_genres,
            android.R.layout.simple_spinner_item
    );

    genreAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerGenre.setAdapter(genreAdapter);

    buttonSearch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String filterAuthor = textAuthor.getText().toString();
            String filterTitle = textTitle.getText().toString();
            int filterGenreId = spinnerGenre.getSelectedItemPosition();

            Intent intent = new Intent(MainActivity.this, ListActivity.class);
            intent.putExtra("AUTHOR", filterAuthor);
            intent.putExtra("TITLE", filterTitle);
            intent.putExtra("GENREID", filterGenreId);
            startActivity(intent);
        }
    });
}
}
导入android.content.Intent;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Spinner;
导入android.widget.Toast;
公共类MainActivity扩展了AppCompatActivity{
私人编辑文本作者;
私人编辑文本标题;
私人编辑文本体裁;
私人按钮搜索;
私人纺纱机;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Init(getApplicationContext());
textAuthor=findViewById(R.id.editTextAuthor);
textTitle=findViewById(R.id.editTextAuthor);
buttonSearch=findViewById(R.id.buttonSearch);
喷丝器类型=(喷丝器)findViewById(R.id.SpinnerGene);
ArrayAdapter genreAdapter=ArrayAdapter.createFromResource(
这
R.array.book_体裁,
android.R.layout.simple\u微调器\u项目
);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
喷丝头类型。设置适配器(GenReadAdapter);
buttonSearch.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
String filterAuthor=textAuthor.getText().toString();
String filterTitle=textTitle.getText().toString();
int filterGenreId=SpinnerGene.getSelectedItemPosition();
意向意向=新意向(MainActivity.this、ListActivity.class);
intent.putExtra(“作者”,过滤器作者);
意向。额外(“标题”,过滤器);
intent.putExtra(“GENREID”,filterGenreId);
星触觉(意向);
}
});
}
}

试试这个

使用bundle在两个片段之间传递值

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class TabPagerAdapter extends FragmentPagerAdapter{

int tabCount;

 public TabPagerAdapter(FragmentManager fm, int numberOfTabs) {
super(fm);
this.tabCount = numberOfTabs;
}

 @Override
public Fragment getItem(int position) {
switch (position) {
    case 0:
        return  new HomeScreenFragment();
    case 1:
        return new SearchFormFragment();
    case 2:
       Fragment fragment = new SearchResultsFragment()
     Bundle args = new Bundle();
     args.putString("Key", "Value");
     fragment.setArguments(args);
        return fragment;

    case 3:
        return new DetailsScreenFragment();
    default:
        return null;
   }
}

    @Override
     public int getCount() {

   return tabCount;

   }
   }
在SearchResultsFragment的onCreateView(..)中

 String value = getArguments().getString("Key");


跳转它的帮助您

您可以使用界面将搜索字符串从片段2发送到您的活动,并从它们调用片段3中的所有方法,因为片段3对象将在您的活动中对您可用,您可以在片段3中设置performSearch()并从活动中调用它。 或者,您可以使用事件总线之类的工具来避免设置接口所需的锅炉板代码

看看这个事件总线回购 在需要搜索字符串的位置注册事件总线,在您的例子中,像这样在Fragment3中注册事件总线

  @Override
 public void onStart() {
 super.onStart();
 EventBus.getDefault().register(this);
 }

 @Override
 public void onStop() {
 super.onStop();
 EventBus.getDefault().unregister(this);
 }
    @Subscribe
public void onSearchEvent(String searchString){
 //you will get your search string here
}
在片段3中创建一个如下函数

  @Override
 public void onStart() {
 super.onStart();
 EventBus.getDefault().register(this);
 }

 @Override
 public void onStop() {
 super.onStop();
 EventBus.getDefault().unregister(this);
 }
    @Subscribe
public void onSearchEvent(String searchString){
 //you will get your search string here
}
现在回到fragment2,从您想要发送searchString的地方,您必须在下面的代码中输入您想要发送searchString的地方,这个发布的searchString将由Fragment3在其