Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用bundle将数据从片段传递到活动_Java_Android_Android Fragments - Fatal编程技术网

Java 如何使用bundle将数据从片段传递到活动

Java 如何使用bundle将数据从片段传递到活动,java,android,android-fragments,Java,Android,Android Fragments,我有一个关于我的主活动的搜索视图,我想将提交的字符串从MainActivity传递到SearchFragment @Override public boolean onQueryTextSubmit(String query) { Bundle bundle = new Bundle(); bundle.putString("searchTitle", query); SearchFragment searchFragment = new SearchFragment();

我有一个关于我的主活动的搜索视图,我想将提交的字符串从MainActivity传递到SearchFragment

@Override
public boolean onQueryTextSubmit(String query) {
   Bundle bundle = new Bundle();
   bundle.putString("searchTitle", query);
   SearchFragment searchFragment = new SearchFragment();
   searchFragment.setArguments(bundle);

   Intent mIntent = new Intent(MainActivity.this, SearchActivity.class);
   startActivity(mIntent);

   return true;
}
@Override
public onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    String value = getArguments().getString("key");
}
但是当我试图获取SearchFragment中的数据时,我得到了NullPointerException

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    strText = getArguments().getString("searchTitle");

    return inflater.inflate(R.layout.fragment_movies, container, false);
}
如何修复此问题?

请尝试此方法

在你的主要活动中

@Override
public boolean onQueryTextSubmit(String query) {
    Bundle bundle = new Bundle();
    bundle.putString("searchTitle", query);
    SearchFragment searchFragment = new SearchFragment();
    searchFragment.setArguments(bundle);

    Intent mIntent = new Intent(MainActivity.this, SearchActivity.class);

    // Add this line.
    mIntent.putExtra("key", "value");

    startActivity(mIntent);
    return true;
}
在您的搜索活动中

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView([layout_name])

    Fragment fragment = new Fragment();
    Bundle bundle = new Bundle();

    // Put data respected to your data type.
    bundle.putString("key", getIntent().getStringExtra("key"));
    fragment.setArguments(bundle);

    // Add new fragment
    getSupportFragmentManager()
        .beginTransaction()
        .add([container_id], fragment)
        .addToBackStack(null)
        .commit()
}
在你的片段中

@Override
public onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    String value = getArguments().getString("key");
}

如果您想通过bundle传递数据,至少应该将这个bundle放在您的意图中

mIntent.putExtras(bundle)
这样你才能度过难关

getActivity().getIntent().getExtras().getString("searchTitle")

这回答了你的问题吗@P.JUnit否,它总是返回空值。我认为您应该将数据添加到从MainActivity到SearchActivity的意图中。然后,如果您在SearchActivity中获取数据,您应该将数据添加到bundle并使用bundle创建SearchFragment。如果不起作用,它仍然会在代码行“strText=getArguments().getString(“key”);上生成NullPointerException