Android “片段中的文本视图”;“在空对象引用上”;
我有一块碎片Android “片段中的文本视图”;“在空对象引用上”;,android,nullpointerexception,Android,Nullpointerexception,我有一块碎片 public class Player extends Fragment { private TextView songTitleLabel,songNameSinger; private View view; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
public class Player extends Fragment {
private TextView songTitleLabel,songNameSinger;
private View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
view = inflater.inflate(R.layout.player, container, false);
// All player buttons
songTitleLabel = view.findViewById(R.id.Title);
songNameSinger = view.findViewById(R.id.singer);
return view;
}
在同一个片段中有一个方法可以做到这一点
public void playSong(String id ,String Singer) {
songTitleLabel.setText(id);
songNameSinger.setText(Singer);
}
我在主活动中调用这个方法
String name = CardList.get(position).getId();
String singer = CardList.get(position).getSinger();
Player player = new Player();
player.playSong(name,singer);
我确保当字符串转到Fragment方法时,它不会变成null
,所以我放了一个日志,看到它的notnull
,但是当我创建TextView.setText
时,它会出现这个错误
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
所以我试着做另一件事,我自己这样设置值
songTitleLabel.setText("Value");
它确实起作用了,我不知道问题出在哪里。。。
谢谢大家…仅创建该
片段的对象将不会调用该片段的oncreateview(您在其中初始化视图),因此文本视图
为空
请从活动中调用片段方法,如下面的示例所示
FragmentManager fm = getSupportFragmentManager();
Player fragment = (Player )fm.findFragmentById(R.id.fragment_id);
fragment.playSong(name,singer);
或
您正在尝试从Activity调用fragment方法吗?您介意提供完整的片段和调用片段方法的类的一部分吗?它返回null,因为您正在直接为尝试访问playSong()的片段创建新实例,请检查我的答案,这会解决你的问题。你给你分配了名片吗?问题出在你的cardList或position变量中,所以你是否正确分配了它们?@Badran它不是cardList,因为如果它是i get null on the log to,它会出现不可转换类型的错误;无法逐段施放碎片。玩家在我的情况下我的碎片请发布你在尝试什么?
Player fragment = (Player ) getFragmentManager().findFragmentById(R.id.example_fragment);
fragment.playSong(name,singer);