Java 获取nullpointer异常将数据从活动发送到片段onCreate
我一直在尝试使用bundle将活动中的字符串数据发送到片段,但当我尝试访问它时,它会给出nullpointerexception 活动中的oncreate方法如下所示Java 获取nullpointer异常将数据从活动发送到片段onCreate,java,android,android-fragments,android-bundle,Java,Android,Android Fragments,Android Bundle,我一直在尝试使用bundle将活动中的字符串数据发送到片段,但当我尝试访问它时,它会给出nullpointerexception 活动中的oncreate方法如下所示 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_chart); // Setup too
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chart);
// Setup toolbar and title
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
readDb();
printChart();
printTop10();
Bundle bundle = new Bundle();
bundle.putString("edttext", myString);
// set Fragmentclass Arguments
ToolbarFragment fragobj = new ToolbarFragment();
fragobj.setArguments(bundle);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String strtext = getArguments().getString("edttext");
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_toolbar, container, false);
}
onCreateView上的片段如下所示
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chart);
// Setup toolbar and title
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
readDb();
printChart();
printTop10();
Bundle bundle = new Bundle();
bundle.putString("edttext", myString);
// set Fragmentclass Arguments
ToolbarFragment fragobj = new ToolbarFragment();
fragobj.setArguments(bundle);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String strtext = getArguments().getString("edttext");
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_toolbar, container, false);
}
如果能帮我摆脱空指针,我将不胜感激,我正在尝试将数据发送到片段,以便它可以使用共享按钮共享数据。看起来“edttext”键的获取部分导致了空值,因为它是在没有实际赋值的情况下被触发的,所以我想获取“edttext”具有默认值的键可以避免空值 在片段的oncreateview中这样做
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//in this line add these "" as a default value to avoid null.
String strtext = getArguments().getString("edttext","");
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_toolbar, container, false);
}
编辑
忘记前面的答案,然后执行以下操作:
删除以下内容:
Bundle bundle = new Bundle();
bundle.putString("edttext", myString);
// set Fragmentclass Arguments
ToolbarFragment fragobj = new ToolbarFragment();
fragobj.setArguments(bundle);
假设您的活动名称为(MyActivity),然后在oncreate下执行此操作
private String myString="whatever";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chart);
// Setup toolbar and title
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
readDb();
printChart();
printTop10();
}
//add this method (this method will send the myString to fragment)
public String getmyString(){
return myString;
}
现在转到您的片段并将其从oncreateview中删除
String strtext = getArguments().getString("edttext");
在碎片中这样做
private String strtext="";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//now get the string like that
strtext=((MyActivity)getActivity).getmyString();
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_toolbar, container, false);
}
更新
1) 确保(项目)列表不为空。您应该在填充之前对其进行初始化(为了检测问题,最好显示如何填充项目列表)
2) 在getmystring()方法中尝试以下操作:
public String getmyString(){
for(int i=0 ; i<items ; i++){
myString=items.get(i);
}
return myString;
}
公共字符串getmyString(){
对于(int i=0;i您没有在任何地方处理fragobj
。您如何将ToolbarFragment
加载到活动中?
?它崩溃了,原因是:java.lang.nullpointer异常:尝试调用虚拟方法“java.lang.String android.os.Bundle.getString(java.lang.String,java.lang.String)“在一个空对象引用上,在EDTText之后添加”“您是将(mystring)传递为空还是有值?粘贴(mystring)的代码。如何为(mystring)设置值。我在我的活动中将其设置为全局:private String mystring=“Sending String”;请检查编辑,希望有帮助。