java - 无法将数据从 Activity 传递到 Fragment
问题描述
我是新手android
。我想将数据从 传递activity
到fragment
。我看到了几个问题,他们给了我一个解决方案。解决方案是通过bundle
. 我从堆栈溢出中尝试了该解决方案。但不能帮助我解决这个问题。它显示Null pointer Exception
. 奇怪的是每个答案都有这样的评论,指出空指针异常错误有很多赞成票。那么将数据从活动传递到片段的正确方法是什么
这是活动代码:
我使用了带有 2 个片段的底部导航栏
private BottomNavigationView.OnNavigationItemSelectedListener navigationItemSelectedListener=new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment=null;
switch (item.getItemId())
{
case R.id.home_tab:
selectedFragment =new home_fragment();
Log.w("SelecetedFra", "Selfragloaded");
Bundle bundle = new Bundle();
bundle.putString("board_name", "cbse");
bundle.putString("class_name", "12th");
selectedFragment.setArguments(bundle);
break;
case R.id.analytics_tab:
selectedFragment =new analytics_fragment();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,selectedFragment).commit();
return true;
}
};
片段代码:
public class home_fragment extends Fragment {
private ViewGroup placeholder;
String board_name;
String class_name;
private View view;
public home_fragment() {
}
// TODO: Rename and change types and number of parameters
public static home_fragment newInstance(String param1, String param2) {
home_fragment fragment = new home_fragment();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// In here, I am getting the data
Bundle bundle = this.getArguments();
Log.w("bundle ", String.valueOf(bundle));
board_name = getArguments().getString("board_name");
class_name = getArguments().getString("class_name");
Log.w("homeFragBundle",class_name+""+board_name);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view=inflater.inflate(R.layout.fragment_home_fragment_loader, container, false);
placeholder = (ViewGroup) view;
return placeholder;
}
}
我得到的错误:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
我不知道如何传递数据。每个人都建议我通过捆绑传递数据。但它给了我null pointer exception
。请帮我解决一些问题。
解决方案
推荐阅读
- ios - Swift - Scheduled Timer 未按预期触发
- sql - MS Access SQL 添加一个新列,该列是其他列的分数
- c# - C# 事件处理程序永远不会获得订阅者
- dart - Flutter 按钮应该加载新的 webview url
- python - 在 Django 列表视图中显示模型字段名
- c++ - 在 STL 容器的 STL 容器上调用 clear
- android - 列表视图根本不可见
- java - 执行java类时如何在命令行参数中为属性指定路径
- java - 带有十六进制输入的 BigInteger NumberFormatException
- composer-php - 在更新时更新 json 文件中的作曲家依赖项