Android 无法在片段之间传递数据…..TextView引发NullPoint异常

Android 无法在片段之间传递数据…..TextView引发NullPoint异常,android,android-fragments,textview,Android,Android Fragments,Textview,对于所有投反对票并投票支持该问题的人来说,他们认为这与textview的范围有关……然后看看,这与textview的范围无关 public class FragmentArtists extends Fragment { ArrayList<SongDetails> songinfo2; View view; TextView text; public View onCreateView(LayoutInflater inflater, Vie

对于所有投反对票并投票支持该问题的人来说,他们认为这与textview的范围有关……然后看看,这与textview的范围无关

public class FragmentArtists extends Fragment {
        ArrayList<SongDetails> songinfo2;
    View view;
    TextView text;
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState)
    {Context context;
    LayoutInflater lf = getActivity().getLayoutInflater();   

    //view = inflater.inflate(R.layout.fragment_artist,  null);
 view =  lf.inflate(R.layout.test,container, false);
// view = inflater.inflate(R.layout.test,container, false);


     //     text=(TextView)view.findViewById(R.id.tt);when i use this,it works fine but i want to do it in the other method

//text.setText("makzzz");when i use this,it works fine but i want to do it in the other method
return view;

}

 void setSongList(ArrayList<SongDetails> songinfo) 
{    //TextView text=(TextView)this.getView().findViewById(R.id.tt);//when i used this view was not global
      text=(TextView)view.findViewById(R.id.tt);//when i used this,view was global;
      //TextView text=(TextView)view.findViewById(R.id.tt);
    // text=(TextView)super.getView().findViewById(R.id.tt);
    //i also tried keeping the "text" local     

     text.setText("makzzz");
}}
公共类碎片艺术家扩展碎片{
ArrayList songinfo2;
视图;
文本查看文本;
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState)
{背景;
LayoutInflater lf=getActivity().getLayoutInflater();
//视图=充气机。充气(R.layout.fragment\u artist,空);
视图=左前充气(右布局测试,容器,假);
//视图=充气机。充气(右布局。测试,容器,假);
//text=(TextView)view.findViewById(R.id.tt);当我使用这个方法时,它工作正常,但我想用另一个方法
//setText(“makzzz”);当我使用它时,它工作得很好,但我想用另一种方法来做
返回视图;
}
无效设置歌曲列表(ArrayList歌曲信息)
{//TextView text=(TextView)this.getView().findviewbyd(R.id.tt);//使用此视图时不是全局视图
text=(TextView)view.findViewById(R.id.tt);//当我使用这个时,视图是全局的;
//TextView text=(TextView)view.findViewById(R.id.tt);
//text=(TextView)super.getView().findViewById(R.id.tt);
//我还试着将“文本”保留在本地
text.setText(“makzzz”);
}}
正在发送数据的片段

public class FragmentSongs extends  Fragment implements Serializable {

    ListView SngList;


     ArrayList<SongDetails> Songinfo=null;
    AdapterView.AdapterContextMenuInfo info;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) 
    {

        ViewGroup view = (ViewGroup) inflater.inflate(R.layout.fragment_song, null);

        SngList = (ListView) view.findViewById(R.id.SongList);
        registerForContextMenu(SngList);
        //File f=new File(Environment.getExternalStorageDirectory()+"/Music");
        File f=new File("/system/");
        int j=0;int i=0;

        getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

          Songinfo = getSongsFromDirectory(f);



        //sorting done below
        if (Songinfo.size()>0)
        {

            for( j=0; j<Songinfo.size();j++)
            {
                for ( i=j+1 ; i<Songinfo.size(); i++)
                { 
                    SongDetails a=Songinfo.get(i);
                    SongDetails b=Songinfo.get(j);
                    if(a.getSong().toLowerCase().compareTo(b.getSong().toLowerCase())<0)
                    {   

                        Songinfo.set(i,b );
                        Songinfo.set(j,a);
                    }
                }

            }






       SngList.setAdapter(new CustomAdapter(Songinfo));
       return view;
        }
        else return null;

    }
    OnFragmentCreatedListener listener;
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            listener = (OnFragmentCreatedListener) getActivity();
            listener.onFragmentCreated(Songinfo);
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString() + " must implement onFragmentCreated");
        }
    }
公共类FragmentSongs扩展片段实现可序列化{
列表视图SngList;
ArrayList Songinfo=null;
AdapterView.AdapterContextMenuInfo信息;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState)
{
视图组视图=(视图组)充气器。充气(R.layout.fragment\u song,null);
SngList=(ListView)view.findViewById(R.id.SongList);
registerForContextMenu(SngList);
//文件f=新文件(Environment.getExternalStorageDirectory()+“/Music”);
文件f=新文件(“/system/”);
int j=0;int i=0;
getActivity().setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u Grait);
Songinfo=getSongsFromDirectory(f);
//分类如下
如果(Songinfo.size()>0)
{
对于(j=0;j你应该打电话

text=(TextView)view.findViewById(R.id.tt);
onCreateView(),或在对其执行任何操作之前从onCreateView()调用的方法中。如果尚未将文本分配给UI元素,则TextView会引发NullPoint异常。如果确实希望在另一个方法中进行分配,请编写如下方法

private void initUI()

你在哪里调用
setSongList
?你可以初始化
onCreateView
。将textview声明为类成员,并在片段的holderactivity中的
setSongList
中使用它,因为我正在片段之间传递数据。如果需要,这就是代码……。我已经尝试将textview设置为类成员,请通过我的code…我已经写了我尝试过的所有备选方案如果你在调用
onCreateView
之前调用
setSongList
,那么难怪crashi也在这里遵循了这个链接,他也这样做了(和我一样)当然,如果您在操作它之前这样做,它不会给出错误,但我建议这样做,因为在方法中首先初始化UI元素是最佳做法。请详细说明..我已经尝试设置UI元素(Textview,view)作为globals,我也会尝试这个例子。你做了与那个例子不同的事情吗?是的……例如,他通过点击事件发送消息(在布局一中),但我从onAttach传递消息(在“发送数据的片段”中)
private void initUI()