The thing I'm trying to implement is a OnClick
for my ListView
so when I click in my ListView
in tab1
, I want to switch tabs to tab2
and then I want to save the clicked ListView
row to be displayed in same ListView
in tab2
but with more information. But I'm getting this error.
Why am I getting this error, and how can I display the chosen row in tab1
to tab2
?
public class Tab1 extends TabActivity {
WifiManager wifiManager;
WifiScanReceiver wifiReciever;
String ssid;
int channel;
int level;
ArrayAdapter adapter;
ListView list;
ArrayList<String> wifis;
WifiInfo wifiInfo;
TabHost tabHost = null;
// TabSpec Names
private static final String TAB1 = "Tab1";
private static final String TAB2 = "Tab2";
private static final String TAB3 = "Tab3";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab1);
list = (ListView) findViewById(R.id.text);
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiReciever = new WifiScanReceiver();
wifiInfo = wifiManager.getConnectionInfo();
wifis = new ArrayList<String>(); //initialize wifis
wifis.add("loading...");
adapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_1, wifis);
list.setAdapter(adapter);
wifiManager.startScan(); //make sure this is the last call
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
v.findViewById(R.id.text);
switchTab(1);
}
}); };
public void switchTabs(int tab) {
tabHost.setCurrentTab(tab);
}
public void switchTab(int tab) {
tabHost.setCurrentTab(tab);
}
protected void onPause() {
unregisterReceiver(wifiReciever);
super.onPause();
}
public static int convertFrequencyToChannel(int freq) {
if (freq >= 2412 && freq <= 2484) {
return (freq - 2412) / 5 + 1;
} else if (freq >= 5170 && freq <= 5825) {
return (freq - 5170) / 5 + 34;
} else {
return -1;
}
}
protected void onResume() {
registerReceiver(wifiReciever, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
super.onResume();
}
class WifiScanReceiver extends BroadcastReceiver {
@SuppressLint("UseValueOf")
public void onReceive(Context c, Intent intent) {
List<ScanResult> wifiScanList = wifiManager.getScanResults();
wifis.clear(); //add this
for (int i = 0; i < wifiScanList.size(); i++) {
ssid = wifiScanList.get(i).SSID; //Get the SSID
level = wifiScanList.get(i).level;
channel = wifiScanList.get(i).frequency;
//use add here:
wifis.add(ssid + " " + level + " dBm "); //append to the other data
wifis.toString();
}
adapter.notifyDataSetChanged(); //add this
wifiManager.startScan(); //start a new scan to update values faster
}
}
}
Error messages
05-20 10:40:42.710 4694-4694/com.example.isac.tabtry W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41477930)
05-20 10:40:42.718 4694-4694/com.example.isac.tabtry E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at com.example.isac.tabtry.Tab1.switchTab(Tab1.java:73)
at com.example.isac.tabtry.Tab1$1.onItemClick(Tab1.java:64)
at android.widget.AdapterView.performItemClick(AdapterView.java:301)
at android.widget.AbsListView.performItemClick(AbsListView.java:1508)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3293)
at android.widget.AbsListView$1.run(AbsListView.java:4554)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5365)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)