Skocz do zawartości
Gość

Java, widoczność obiektów w klasie wewnętrznej

Rekomendowane odpowiedzi

Cześć,

piszę sobie appke, i mam problem...

 

nie rozumiem skąd się bierze null pointer exception gdy próbuję operować na obiektach devlist i adapter w klasie  MyReceiver.

wiem na czym polega ten wyjątek ale nie wiem dlaczego on powstaje. obojętnie czy zadeklaruję obiekty jako protected, public czy static.

wygląda to tak że deklaracja działa tak jak wydaje mi się że powinna, natomiast w klasie wewnętrznej nie widać inicjalizacji.

 

kod wygląda tak

public class DevScan extends AppCompatActivity {

    MyReceiver rcvr;
    String test;
    ArrayList<String> devlist;
    ArrayAdapter<String> Adapter;
    ListView devLV;

   protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dev_scan);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        ArrayList<String> devlist = new ArrayList<String>();
        ListView devLV = (ListView) findViewById(R.id.devlistview);
        ArrayAdapter<String> Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,devlist );

        rcvr=new MyReceiver();
        this.registerReceiver(rcvr, new IntentFilter("com.tutorialspoint.CUSTOM_INTENT"));

        }

    private class MyReceiver extends BroadcastReceiver {
       
         @Override
        public void onReceive(Context context, Intent intent){

           //test = intent.getExtras().getString("packet");

            devlist.add("foo");

            Adapter.notifyDataSetChanged();


    }
    }


}
Edytowane przez Gość

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Stworzyles zmienna zaslaniajaca lokalnie zmienne w klasie. Tylko nie wiem czy nie powinno byc this.zmienna :P

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dev_scan);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);


/* POPRAWKA PONIZEJ */
        devlist = new ArrayList<String>();
        devLV = (ListView) findViewById(R.id.devlistview);
        Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,devlist );

        rcvr=new MyReceiver();
        this.registerReceiver(rcvr, new IntentFilter("com.tutorialspoint.CUSTOM_INTENT"));
}
 

 

Edytowane przez Quave

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

działa! byłem pewny że to jakaś <span style='color: red;'>[ciach&#33;]</span>ła o której nie wiem!

i teraz rozumiem dlaczego nie widział inicjalizacji. inicjalizowałem zmienne zmienne lokalne które nieświadomie zadeklarowałem..

 

dzięki!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...