Java 从setSelected()获取空指针异常
我试图在运行时在片段中实现marquee textview 问题#1:我在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
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您应该有两个独立的堆栈溢出问题,而不是在一篇文章中同时发布这两个问题。