片段中的java.lang.NullPointerException
我正在一个片段上创建一个自定义列表视图。考勤是一项具有可滑动选项卡的活动 我希望自定义列表显示在fragment\u Attention\u标记上 此代码在活动中运行良好。。。但当我试图在一个可滑动碎片上做同样的事情时,出现了一些问题片段中的java.lang.NullPointerException,java,android,android-fragments,Java,Android,Android Fragments,我正在一个片段上创建一个自定义列表视图。考勤是一项具有可滑动选项卡的活动 我希望自定义列表显示在fragment\u Attention\u标记上 此代码在活动中运行良好。。。但当我试图在一个可滑动碎片上做同样的事情时,出现了一些问题 04-21 19:21:45.859: W/dalvikvm(18052): threadid=1: thread exiting with uncaught exception (group=0x2b542210) 04-21 19:21:45.879: E/A
04-21 19:21:45.859: W/dalvikvm(18052): threadid=1: thread exiting with uncaught exception (group=0x2b542210)
04-21 19:21:45.879: E/AndroidRuntime(18052): FATAL EXCEPTION: main
04-21 19:21:45.879: E/AndroidRuntime(18052): java.lang.NullPointerException
04-21 19:21:45.879: E/AndroidRuntime(18052): at com.example.markitberry.AttendanceMarkFragment.displayListView(AttendanceMarkFragment.java:66)
04-21 19:21:45.879: E/AndroidRuntime(18052): at com.example.markitberry.AttendanceMarkFragment.onCreateView(AttendanceMarkFragment.java:35)
04-21 19:21:45.879: E/AndroidRuntime(18052): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
04-21 19:21:45.879: E/AndroidRuntime(18052): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
04-21 19:21:45.879: E/AndroidRuntime(18052): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
04-21 19:21:45.879: E/AndroidRuntime(18052): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
04-21 19:21:45.879: E/AndroidRuntime(18052): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
Fragment\u attantance\u mark.java
public class AttendanceMarkFragment extends Fragment {
MyCustomAdapter dataAdapter = null;
ListView listView ;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_attendance_mark, container, false);
listView = (ListView) rootView.findViewById(R.id.listView1);
//View rootView = inflater.inflate(R.layout.fragment_attendance_mark, container, false);
// Generate list View from ArrayList
displayListView();
checkButtonClick(rootView);
return rootView;
}
private void displayListView() {
// Array list of countries
ArrayList<AttendanceMarkListRow> stateList = new ArrayList<AttendanceMarkListRow>();
AttendanceMarkListRow _AttendanceMarkListRow = new AttendanceMarkListRow("Ravi", "Male", "7 Aug",4,false,2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow = new AttendanceMarkListRow("Ravi", "Male", "7 Aug",4,false,2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow = new AttendanceMarkListRow("Div", "Male", "4 Aug",2,false,2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow = new AttendanceMarkListRow("Hari", "Male", "1 Aug",1,false,2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow = new AttendanceMarkListRow("Suu", "Male", "3 Aug",5,false,2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow = new AttendanceMarkListRow("Dhaka", "Male", "5 Aug",0,false,2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow = new AttendanceMarkListRow("Chu", "Male", "8 Aug",4,false,2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow = new AttendanceMarkListRow("Nikita", "Female", "9 Aug",4,false,2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow = new AttendanceMarkListRow("Ravi Ranjan", "Male", "0 Aug",4,false,2);
stateList.add(_AttendanceMarkListRow);
// create an ArrayAdaptar from the String Array
dataAdapter = new MyCustomAdapter(this.getActivity(), R.layout.list_row, stateList);
ListView listView = (ListView) getView().findViewById(R.id.listView1);
// Assign adapter to ListView
listView.setAdapter(dataAdapter);
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
AttendanceMarkListRow state = (AttendanceMarkListRow) parent.getItemAtPosition(position);
Toast.makeText(getActivity().getApplicationContext(),
"Clicked on : " + state.getName(), Toast.LENGTH_LONG)
.show();
}
});
}
private class MyCustomAdapter extends ArrayAdapter<AttendanceMarkListRow> {
private ArrayList<AttendanceMarkListRow> stateList;
public MyCustomAdapter(Context context, int textViewResourceId,
ArrayList<AttendanceMarkListRow> stateList) {
super(context, textViewResourceId, stateList);
this.stateList = new ArrayList<AttendanceMarkListRow>();
this.stateList.addAll(stateList);
}
private class ViewHolder {
TextView gender;
TextView lastseen;
CheckBox name;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
Log.v("ConvertView", String.valueOf(position));
if (convertView == null) {
LayoutInflater vi = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.list_row, null);
holder = new ViewHolder();
holder.gender = (TextView) convertView.findViewById(R.id.gender);
holder.lastseen = (TextView) convertView.findViewById(R.id.lastSeen);
holder.name = (CheckBox) convertView
.findViewById(R.id.checkBox1);
convertView.setTag(holder);
holder.name.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
AttendanceMarkListRow _state = (AttendanceMarkListRow) cb.getTag();
Toast.makeText(
getActivity().getApplicationContext(),
"Checkbox: " + cb.getText() + " -> "
+ cb.isChecked(), Toast.LENGTH_LONG)
.show();
_state.setSelected(cb.isChecked());
}
});
} else {
holder = (ViewHolder) convertView.getTag();
}
AttendanceMarkListRow state = stateList.get(position);
holder.gender.setText(state.getGender());
holder.lastseen.setText(state.getLastSeen());
holder.name.setText(state.getName());
holder.name.setChecked(state.isSelected());
holder.name.setTag(state);
return convertView;
}
}
private void checkButtonClick(View view) {
Button myButton = (Button) view.findViewById(R.id.butBdaySelectNext);
myButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StringBuffer responseText = new StringBuffer();
responseText.append("Selected Countries are...\n");
ArrayList<AttendanceMarkListRow> stateList = dataAdapter.stateList;
for (int i = 0; i < stateList.size(); i++) {
AttendanceMarkListRow state = stateList.get(i);
if (state.isSelected()) {
responseText.append("\n" + state.getName());
}
}
Toast.makeText(getActivity().getApplicationContext(), responseText,
Toast.LENGTH_LONG).show();
}
});
}
}
公共类AttendanceMarkFragment扩展片段{
MyCustomAdapter dataAdapter=null;
列表视图列表视图;
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment\u Attention\u标记,容器,假);
listView=(listView)rootView.findViewById(R.id.listView1);
//视图根视图=充气机。充气(R.layout.fragment\u Attention\u标记,容器,假);
//从ArrayList生成列表视图
displayListView();
选中按钮单击(rootView);
返回rootView;
}
私有void displayListView(){
//国家列表
ArrayList stateList=新的ArrayList();
AttendanceMarkListRow _AttendanceMarkListRow=新的AttendanceMarkListRow(“拉维”,“男性”,“8月7日”,4,假,2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow=新的AttendanceMarkListRow(“拉维”,“男性”,“8月7日”,4,假,2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow=新的AttendanceMarkListRow(“Div”,“Male”,“8月4日”,2,false,2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow=新的AttendanceMarkListRow(“哈里”,“男性”,“8月1日”,1,假,2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow=新的AttendanceMarkListRow(“Suu”、“男性”、“8月3日”、5、假、2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow=新的AttendanceMarkListRow(“达卡”,“男性”,“8月5日”,0,假,2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow=新的AttendanceMarkListRow(“Chu”,“男性”,“8月8日”,4,假,2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow=新的AttendanceMarkListRow(“Nikita”,“女性”,“8月9日”,4,假,2);
stateList.add(_AttendanceMarkListRow);
_AttendanceMarkListRow=新的AttendanceMarkListRow(“Ravi Ranjan”,“男”,“8月0日”,4,假,2);
stateList.add(_AttendanceMarkListRow);
//从字符串数组创建ArrayAdaptar
dataAdapter=新的MyCustomAdapter(this.getActivity(),R.layout.list_行,stateList);
ListView ListView=(ListView)getView().findViewById(R.id.listView1);
//将适配器分配给ListView
setAdapter(dataAdapter);
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//单击后,显示带有文本视图文本的祝酒词
AttendanceMarkListRow状态=(AttendanceMarkListRow)父级.getItemAtPosition(position);
Toast.makeText(getActivity().getApplicationContext(),
单击:“+state.getName(),Toast.LENGTH\u LONG)
.show();
}
});
}
私有类MyCustomAdapter扩展了ArrayAdapter{
私有ArrayList状态列表;
公共MyCustomAdapter(上下文,int textViewResourceId,
ArrayList状态列表){
super(上下文、textViewResourceId、状态列表);
this.stateList=新的ArrayList();
this.stateList.addAll(stateList);
}
私有类视窗持有者{
文本视图性别;
TextView-lastseen;
复选框名称;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
ViewHolder=null;
Log.v(“ConvertView”,String.valueOf(position));
if(convertView==null){
LayoutInflater vi=(LayoutInflater)getActivity().getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
convertView=vi.充气(R.layout.list_行,空);
holder=新的ViewHolder();
holder.gender=(TextView)convertView.findViewById(R.id.gender);
holder.lastseen=(TextView)convertView.findViewById(R.id.lastseen);
holder.name=(复选框)convertView
.findViewById(R.id.复选框1);
convertView.setTag(支架);
holder.name.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
复选框cb=(复选框)v;
AttendanceMarkListRow _state=(AttendanceMarkListRow)cb.getTag();
Toast.makeText(
getActivity().getApplicationContext(),
“复选框:”+cb.getText()+“->”
+cb.isChecked(),Toast.LENGTH\u LONG)
.show();
_state.setSelected(cb.isChecked());
}
});
}否则{
holder=(ViewHolder)convertView.getTag();
}
AttendanceMarkListRow状态=stateList.get(位置);
holder.gender.setText(state.getGender());
holder.lastseen.setText(state.getLastSeen());
holder.name.setText(state.getName());
holder.name.setChecked(state.isSelected());
持有者名称设置标签(状态);
返回视图;
}
}
专用作废检查按钮单击(查看){
Button myButton=(Button)view.findViewById(R.id.butBdaySelectNext);
myButton.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
ListView listView = (ListView) getView().findViewById(R.id.listView1);
ListView listView ;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_attendance_mark, container, false);
listView = (ListView) rootView.findViewById(R.id.listView1);
// Generate list View from ArrayList
displayListView();
checkButtonClick();
return rootView;
}
displayListView(rootView);
private void displayListView(View View) {
ListView listView = (ListView) view.findViewById(R.id.listView1);
}
ListView listView = (ListView) getView().findViewById(R.id.listView1);
checkButtonClick(rootView);
private void checkButtonClick(View view) {
Button myButton = (Button) view.findViewById(R.id.butBdaySelectNext);