어제 새벽까지 하다 도저히 안되어 올렸었는데요.

아무런 답변을 못받았습니다.

아래 보시고 답변 좀 부탁 드리겠습니다.

리스트뷰 내에 있는 체크 박스 클릭 시

클릭된 정보를 저장하려고 합니다.

현재는 한개만 클릭해보고 이벤트가 있는지만 확인하려고 하는데요.

자꾸 아래 부분에서 NullPointerException로 인해서 죽습니다.

도무지 왜 원인을 모르겠네요.

 

 

---------------------소스------------------------

package org.tacademy.listview;

import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.Toast;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.content.SharedPreferences;
 
public class WifiListViewActivity extends Activity {
 
    private String[] values = new String[15];
 //private String[] values;
    WifiManager mainWifi;
    WifiReceiver receiverWifi;
    ScreenReceiver receiverScreen;
    List<ScanResult> wifiList;
    StringBuilder sb = new StringBuilder();
    WifiInfo wifiInfo; 

              
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       

        mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        wifiInfo = mainWifi.getConnectionInfo();

        //String name = wifiInfo.getSSID(); 

        
        /* Wifi Broadcast*/
        receiverWifi = new WifiReceiver();
        registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
        if (!mainWifi.isWifiEnabled()) {
            mainText.setText("isWifiEnabled failed\n");
            return;
        }
          mainWifi.startScan();
          mainText.setText("\nStarting Scan...\n");
         
        /* Screen Broadcast*/
          IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
          filter.addAction(Intent.ACTION_SCREEN_OFF); 
          BroadcastReceiver mReceiver = new ScreenReceiver(); 
          registerReceiver(mReceiver, filter);


          // 레이아웃 파일의 리스트뷰를 가져와 커스텀어답터를 세팅한다.
          final ListView listView = (ListView) findViewById(R.id.listView);
          AreaList al = new AreaList(this, 0);
          listView.setAdapter(al);
          //listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
         
          CheckBox chk = (CheckBox) convertView.findViewById(R.id.checkBox);
          chk.setOnClickListener(new OnClickListener(){  // NullPointerException 발생 지점(76라인)
           public void onClick(View v) {
            System.out.println("ap is checked");
            //if (ob instanceof Boolean) {
                //check.setTag(!(Boolean)ob);
            
           //}
           }
          });

         
          /*
          // Shared Preference를 불러옴       
          SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
         
          CheckBox check = (CheckBox)findViewById(R.id.checkBox);
         
          // 저장된 값들을 불러옴      
          Boolean chk = pref.getBoolean("SlientMode", false);
          System.out.println(chk);
          if(pref != null)
           check.setChecked(chk);
          else
           check.setChecked(true);
           */
    }
   
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, 0, 0, "Refresh");
        return super.onCreateOptionsMenu(menu);
    }

    // 어플리케이션이 화면에서 사라질 때
    @Override
    protected void onStop() { 
    // TODO Auto-generated method stub  
    super.onStop();
/*
    // UI 상태를 저장
    SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE); 
    SharedPreferences.Editor editor = pref.edit(); // Editor를 불러옴
 
    CheckBox check = (CheckBox)convertView.findViewById(R.id.checkBox);       
      
    // 저장할 값들을 입력             
    editor.putBoolean("Check", check.isChecked());
      
    // 저장     
    editor.commit();
*/
    }

   public boolean onMenuItemSelected(int featureId, MenuItem item) {
        mainWifi.startScan();
        mainText.setText("Starting Scan");
        return super.onMenuItemSelected(featureId, item);
   }

   protected void onPause() {
        unregisterReceiver(receiverWifi);
        super.onPause();
   }

   protected void onResume() {
        registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
        super.onResume();


   }
  
   class WifiReceiver extends BroadcastReceiver {
        public void onReceive(Context c, Intent intent) {
        
             //sb = new StringBuilder();
             wifiList = mainWifi.getScanResults();
             //values = new String[wifiList.size()];
             System.out.println(values.length);
             System.out.println(wifiList.size());

             for(int i = 0; i < (wifiList.size()); i++) {
                 //sb.append(new Integer(i+1).toString() + ".");
                 values[i] = (wifiList.get(i)).SSID;
                 //sb.append("\n\n");
             }
             //mainText.setText(sb);
            
        }

  private void println(String string) {
   // TODO Auto-generated method stub
   
  }
   }
  
   class ScreenReceiver extends BroadcastReceiver {
       public void onReceive(Context c, Intent intent) {
       
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
      // turn Wi-Fi off 
         //mainWifi.setWifiEnabled(false); 
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
      // turn Wi-Fi on 
         //mainWifi.setWifiEnabled(true);
       }      
       }
  }
 
    private class AreaList extends ArrayAdapter<STRING> {
 
        public AreaList(Context context, int textViewResourceId) {
            super(context, textViewResourceId);
 
        }
     
        // 배열의 길이를 리턴하여 리스트의 개수를 계산한다.
        @Override
        public int getCount() {
            return values.length;
        }
 
        // 배열의 개수만큼 리스트를 만든다.
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
 
            if (convertView == null) {
 
                LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = vi.inflate(R.layout.list_items, null);
 
            }
 
            if (values[position] != null) {
 
                TextView tv = (TextView) convertView.findViewById(R.id.textView);

                if (tv != null) {
                    tv.setText(values[position]);  
                }
            }

           
            return convertView; 
        }
    }
}

------------logcam------------------------

01-24 01:35:44.245: W/dalvikvm(7625): threadid=1: thread exiting with uncaught exception (group=0x4001d7f0)
01-24 01:35:44.249: E/AndroidRuntime(7625): FATAL EXCEPTION: main
01-24 01:35:44.249: E/AndroidRuntime(7625): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.tacademy.listview/org.tacademy.listview.WifiListViewActivity}: java.lang.NullPointerException
01-24 01:35:44.249: E/AndroidRuntime(7625):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-24 01:35:44.249: E/AndroidRuntime(7625):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-24 01:35:44.249: E/AndroidRuntime(7625):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-24 01:35:44.249: E/AndroidRuntime(7625):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-24 01:35:44.249: E/AndroidRuntime(7625):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-24 01:35:44.249: E/AndroidRuntime(7625):  at android.os.Looper.loop(Looper.java:123)
01-24 01:35:44.249: E/AndroidRuntime(7625):  at android.app.ActivityThread.main(ActivityThread.java:4627)
01-24 01:35:44.249: E/AndroidRuntime(7625):  at java.lang.reflect.Method.invokeNative(Native Method)
01-24 01:35:44.249: E/AndroidRuntime(7625):  at java.lang.reflect.Method.invoke(Method.java:521)
01-24 01:35:44.249: E/AndroidRuntime(7625):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
01-24 01:35:44.249: E/AndroidRuntime(7625):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-24 01:35:44.249: E/AndroidRuntime(7625):  at dalvik.system.NativeStart.main(Native Method)
01-24 01:35:44.249: E/AndroidRuntime(7625): Caused by: java.lang.NullPointerException
01-24 01:35:44.249: E/AndroidRuntime(7625):  at org.tacademy.listview.WifiListViewActivity.onCreate(WifiListViewActivity.java:76)
01-24 01:35:44.249: E/AndroidRuntime(7625):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-24 01:35:44.249: E/AndroidRuntime(7625):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-24 01:35:44.249: E/AndroidRuntime(7625):  ... 11 more
01-24 01:35:45.972: I/Process(7625): Sending signal. PID: 7625 SIG: 9