我正在尝试在运行时在片段中实现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;
}
}
这是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>
答案 0 :(得分:3)
空指针当您未初始化时,通常会发生异常 对象或初始化为null。
答案 1 :(得分:2)
在这里回答您的第一个问题 - 我强烈建议发布2个单独的问题。
如果NPE被抛出:
tv.setSelected(true);
(需要一个LogCat来确保)
...然后您的TextView
为null
。
反过来,这意味着rootView.findViewById(R.id.textView1);
没有返回有效的TextView
,可能是因为在R.layout.one
xml中找不到具有此类ID(或该类型)的孩子。
确保您的R.layout.one
xml包含标识为TextView
的{{1}}节点。
修改强>
如果您发布的布局与textView1
相对应,则非常简单:R.layout.one
的ID为TextView
。
你需要改变它。
还要确保布局不会在其他地方使用,否则更改布局中的ID可能会出现问题。
您可能希望更改mywidget
中的ID引用。
答案 2 :(得分:0)
之所以发生这种情况,是因为您的XML中没有任何ID为textView1
的TextView。
修改强>
一旦您需要XML中具有ID listView1