Java 从setSelected()获取空指针异常

Java 从setSelected()获取空指针异常,java,android,android-fragments,android-listfragment,Java,Android,Android Fragments,Android Listfragment,我试图在运行时在片段中实现marquee textview 问题#1:我在tv.setSelected(true)上得到一个空指针异常在第一个片段上。 在我为文本视图添加字幕代码之前,一切正常 问题#2:如何在public void onItemClick的列表视图中移动到新片段而不是新意图 这是我的代码: public static class FragmentOne extends Fragment { ArrayList< String > ar; ArrayAdapt

我试图在运行时在片段中实现marquee textview

问题#1:我在
tv.setSelected(true)上得到一个空指针异常在第一个片段上。
在我为文本视图添加字幕代码之前,一切正常

问题#2:如何在
public void onItemClick
的列表视图中移动到新片段而不是新意图

这是我的代码:

 public static class FragmentOne extends Fragment {

 ArrayList< String > ar;
 ArrayAdapter< String >  ad ;
 ListView lv ;
 TextView     tv;

public FragmentOne() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle        
         savedInstanceState) {
     View rootView = inflater.inflate(R.layout.one, container, false);
          tv = (TextView) rootView.findViewById(R.id.textView1);  

        tv.setSelected(true);
     ar = new ArrayList<String>(); 
     lv = (ListView) rootView.findViewById(R.id.listView1); 
     for (int i = 0 ; i< 10  ; i++){

        ar.add("My Item " + String.valueOf(i)); 

      }
      ad = new ArrayAdapter<String>
     (getActivity().getApplicationContext(), android.R.layout.simple_dropdown_item_1line, 
             ar);

     lv.setAdapter(ad);
     lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                          Toast t = Toast.makeText(getActivity(), "Message",
                                 Toast.LENGTH_SHORT);
                          t.show();

                        Intent i = new Intent(getActivity(), tst.class); 


                        startActivity(i); 

            }
        }); 


    return rootView;
}
公共静态类FragmentOne扩展了Fragment{
ArrayListar;
阵列适配器ad;
ListView lv;
文本视图电视;
公共碎片1(){
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、捆绑
savedInstanceState){
视图根视图=充气机。充气(R.layout.one,容器,错误);
tv=(TextView)rootView.findViewById(R.id.textView1);
tv.setSelected(true);
ar=新的ArrayList();
lv=(ListView)rootView.findViewById(R.id.listView1);
对于(int i=0;i<10;i++){
应收账款加上(“我的项目”+字符串值(i));
}
ad=新阵列适配器
(getActivity().getApplicationContext(),android.R.layout.simple\u下拉菜单\u项目\u 1行,
ar);
低压设置适配器(ad);
lv.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
Toast t=Toast.makeText(getActivity(),“Message”,
烤面包片(长/短);
t、 show();
意图i=新意图(getActivity(),tst.class);
星触觉(i);
}
}); 
返回rootView;
}
}

这是xml代码:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TextView
    android:id="@+id/mywidget"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="94dp"
    android:layout_marginTop="145dp"
    android:ellipsize="marquee"
    android:fadingEdge="horizontal"
    android:lines="2"
    android:marqueeRepeatLimit="marquee_forever"
    android:scrollHorizontally="true"
    android:text="صور أندلسية ..... صفحة الأندلس ....معارك  أندلسية ..... الأندلس في سطور    
     ..... الأندلس :  "
    android:textColor="#ff4500"
    android:focusable="false" />

  </RelativeLayout>

在这里回答您的第一期问题-我强烈建议发布两个单独的问题

如果NPE被抛出:

tv.setSelected(true);
(需要一个LogCat来确保)

。。。然后您的
TextView
null

反过来,这意味着
rootView.findviewbyd(R.id.textView1)
未返回有效的
文本视图
,可能是因为在
R.layout.one
xml中未找到具有此类id(或该类型)的子项

确保您的
R.layout.one
xml包含一个id为
textView1
TextView
节点

编辑

如果您发布的布局与
R.layout.one
对应,那么它就相当简单:那里的
TextView
的id是
mywidget

你需要改变这一点

还要确保布局未在其他地方使用,否则更改布局中的id可能会带来问题


您可能需要更改
片段中的id引用

发生这种情况是因为XML中没有id为
textView1
的TextView

编辑

在XML中需要id为
listView1
ListView的ListView时,ListView也会出现问题

空指针异常通常在未初始化时发生 对象或已初始化为null


@sunil不需要,因为他标记了:“我在tv.setSelected(true)上有一个空指针异常;”“您没有正确使用视图rootView=inflater.inflate(R.layout.one,container,false);tv=(TextView)rootView.findViewById(R.id.textView1);因此,tv=(TextView)rootView.findviewbyd(R.id.textView1);return nullpost您的完整XML,您在代码中使用的一些id不在XMLcheck中XML中的textview的id应该是same@aromaKhan您应该有两个独立的堆栈溢出问题,而不是在一篇文章中同时发布这两个问题。