我想使用DataSelect('1', 'hey'len')
中存在的片段中的数据。我使用Adapter
发送setArguments()
和Adapter
的数据来接收数据。
但是当我调试它时,我在getArguments()
获得nullpointerException
。
这就是我发送数据并接收数据的方式。
在适配器中,发送数据。
getArguments
片段类,以获取数据。
ReversalFragment f1 = new ReversalFragment();
Bundle bundle = new Bundle();
String transId = item.getTxId();
bundle.putString("tId", transId);
f1.setArguments(bundle);
任何人都可以帮助我解决如何处理此异常的问题,为什么Bundle arguments = getArguments();
if(arguments!=null) {
String transId = arguments.getString("tId");
if (transId != null ) {
txView.setText(transId);
}
}
null ??
提前致谢。
答案 0 :(得分:1)
使用可以在适配器中的setTag和Fragment中的getTag。 在构建的方法中,您可以在setTag();
中传递对象@ExportedProperty
public Object getTag() {
throw new RuntimeException("Stub!");
}
public void setTag(Object tag) {
throw new RuntimeException("Stub!");
}
答案 1 :(得分:1)
你应该在Adapter类中调用片段类对象。假设您的片段类名是FragmentB然后你应该调用FragmentB类Object,因为在你的程序中,它无法找到你想要传递数据的片段
FragmentB f1 = new FragmentB();
Bundle bundle = new Bundle();
String transId = item.getTxId();
bundle.putString("tId", transId);
f1.setArguments(bundle);
答案 2 :(得分:1)
您没有明确指定片段的名称,
而不是Fragment f1 = new Fragment();
写Your_Fragment_Name f1 = new Your_Fragment_Name();
它会工作的。
答案 3 :(得分:1)
你应该尝试相反的方式。在当前的方法中,您正在为适配器类中的片段类创建一个对象,并将值分配给该对象,但是当您在Fragment类中时,它会创建一个新实例,并且值实际上为null。
所以你必须尝试这样的事情:
在您的Adapter类中放置getArgument()
和setArgument()
方法。
我很确定你在Fragment类中为Adapter创建对象,将它设置为listview或其他任何东西,在那时设置并获取值。
例如
在Fragment类中:
BaseAdapter adapter = new Adapter(); //constructor called and values set
Bundle args = adapter.getArgument();
现在你可以拥有你需要的确切参数,而无需进行任何进一步的方法调用
适配器类:
Bundle bundle;
public Adapter(){
bundle = new Bundle();
//put required values
}
public Bundle getArgument(){
return bundle;
}
请注意,bundle变量在Adapter类中是全局的
答案 4 :(得分:0)
由于您将从片段创建适配器,因此您可以访问片段中的适配器。
您可以在适配器中创建public String getString()
,在初始化适配器后,您可以在片段中将此方法称为adapter.getString()