Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 碎片在布局充气器上提供空对象引用_Android - Fatal编程技术网

Android 碎片在布局充气器上提供空对象引用

Android 碎片在布局充气器上提供空对象引用,android,Android,我有一个片段“data”类,它从主活动类接收字符串数组,并将这些字符串设置为自身内部的textview 我有一个函数“set”,它接收字符串数组作为参数,并将其设置为textview片段“数据”类的代码为- 日志cat错误为- java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.LayoutInflater android.app.Activity.getLayoutInflater()

我有一个片段“data”类,它从主活动类接收字符串数组,并将这些字符串设置为自身内部的textview
我有一个函数“set”,它接收字符串数组作为参数,并将其设置为textview
片段“数据”类的代码为-



日志cat错误为-

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.LayoutInflater android.app.Activity.getLayoutInflater()' on a null object reference


*****编辑*********
现在我使用bundle而不是字符串数组传递数据-
我的数据类如下-
公共类数据扩展片段{

TextView t1,t2;
    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v=inflater.inflate(R.layout.data,container,false);
         t1=(TextView)v.findViewById(R.id.textView3);
         t2=(TextView)v.findViewById(R.id.textView4);
        return v;
    }

    public void set(){


        t1.setText(getArguments().getString("name"));
        t2.setText(getArguments().getString("email"));

    }
}

我从我的主要活动中这样称呼这组人

show.setOnClickListener(new OnClickListener(){ public void onClick(View v){
            FragmentTransaction ft=getFragmentManager().beginTransaction();
            data frag=new data();
            ft.add(R.id.ly2,frag);
            ft.commit();
            String s[]=data.show();
            Bundle b=new Bundle();
            b.putString("name",s[0]);
            b.putString("email",s[1]);
            frag.setArguments(b);
            frag.set();

        }});<br><br>

Logcat现在说-

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
请提供帮助。

在片段附加到活动之前,您正在调用
set()


更新:在编辑的问题中,在片段附加到活动之前,您仍在调用
set()
commit()
片段事务的处理是异步的;在将主应用程序线程的控制权返回框架之前,将片段附加到活动的工作不会开始

public class data extends Fragment {
    TextView t1;
    TextView t2;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v=inflater.inflate(R.layout.data,container,false);
           t1=(TextView)v.findViewById(R.id.textView3);
        t2=(TextView)v.findViewById(R.id.textView4);
        return v;
    }

    public void set(String[] a){
        t1.setText(a[0]);
        t2.setText(a[1]);

    }
 }

在一个片段中,您不需要将布局膨胀两次。

在片段被添加到活动之前,您可能会调用
set(String[]a)
方法,从而调用其方法
getActivity()
返回null。我不知道为什么要在片段中的set方法中再次使用布局充气器来充气相同类型的另一个布局。只需在
onViewCreated
方法中检索视图,并在
集合(String[]a)
方法中使用thrm之前我一直在调用set()在添加片段之前,但现在我已经做了更正,它仍然会给我相同的错误。是的。但是它在方法get()中给我出了范围外的错误。请提供logcat和您的代码您的“get”方法在哪里…?您只有“set”方法?之前我一直在调用set()在添加片段之前,但现在我已经做了更正,它仍然会给我相同的错误。@Shivamaggarwal:那么在片段被附加到活动之前,你仍然在调用它。@Shivamaggarwal:我已经更新了我的答案,以反映你更新的问题。好的。但是先生,我该怎么做呢?我现在找不到任何方法。@Shivamaggarwal:将剩下的两行从
set()
移到
onCreateView()
。然后,去掉
set()
和对
set()的调用
。此外,我建议在对
碎片事务
中的碎片执行任何操作之前,先将参数
Bundle
附加到碎片上,尽管这样做可能会起作用。为什么会超出作用域?它们不是超出作用域,而是类变量?但一旦初始化,我就假定它们是类变量不再为null。因此,一旦片段在视图中,就可以访问TextView。很抱歉,miriana弄错了。是的,它们没有超出范围,但现在出现了一个新错误。
java.lang.NullPointerException:尝试调用虚拟方法'void android.widget.TextView.setText(java.lang.CharSequence)'在空对象引用上,我正在编辑答案:P。请回答您自己的问题或接受最有帮助的答案,以便对社区有益。祝您编码愉快
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
public class data extends Fragment {
    TextView t1;
    TextView t2;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v=inflater.inflate(R.layout.data,container,false);
           t1=(TextView)v.findViewById(R.id.textView3);
        t2=(TextView)v.findViewById(R.id.textView4);
        return v;
    }

    public void set(String[] a){
        t1.setText(a[0]);
        t2.setText(a[1]);

    }
 }