Java 如何使用bundle将数据从片段传递到活动
我有一个关于我的主活动的搜索视图,我想将提交的字符串从MainActivity传递到SearchFragmentJava 如何使用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();
@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