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);