【问题标题】:Populate Arraylist<String> inside BroadcastReceiver在 BroadcastReceiver 中填充 Arraylist<String>
【发布时间】:2015-04-30 12:37:58
【问题描述】:

我正在开发获得可用 wifi 连接并将其显示在列表视图中的应用程序。但是当我想将连接名称字符串值添加到Arraylist&lt;String&gt; 时,它会给我一个错误。 这是我的代码:

public class HackActivity extends Activity {
    TextView mainText;
    WifiManager wifi;
    WifiReceiver receiver;
    List<ScanResult> scanList;
    ArrayList<String> wifiList;
    ListView list;
    ArrayAdapter<String> adapter;
    StringBuilder sb;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.hack);
        mainText = (TextView) findViewById(R.id.txtMain);
        list=(ListView) findViewById(R.id.list_wifi);
        wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        if (wifi.isWifiEnabled() == false) {
            wifi.setWifiEnabled(true);
            Toast.makeText(getApplicationContext(), "Enabled",
                    Toast.LENGTH_LONG).show();
        }

        receiver = new WifiReceiver();
        registerReceiver(receiver, new IntentFilter(
                WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
        wifi.startScan();
        mainText.setText("Scaning connections...");
    }

    public class WifiReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context ctx, Intent intent) {
            sb = new StringBuilder();
            scanList = wifi.getScanResults();
            sb.append("\n        Number Of Wifi connections :"
                    + scanList.size() + "\n\n");
            for (int i = 0; i < scanList.size(); i++) {
                //sb.append((scanList.get(i)).SSID);
                 wifiList.add((scanList.get(i)).SSID);
            }
             adapter=new
             ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,wifiList);
             list.setAdapter(adapter);
            mainText.setText(sb);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, 0, 0, "Refresh");
        return super.onCreateOptionsMenu(menu);
    }

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

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

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

【问题讨论】:

  • 你能发个错误吗?

标签: android listview arraylist broadcastreceiver wifi


【解决方案1】:

你还没有初始化wifiList:

    ArrayList<String> wifiList;

必须在 onCreate:

    wifiList = new ArrayList<String>();

【讨论】:

    猜你喜欢
    • 2011-12-31
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多