Shai-Hulud Δημοσ. 31 Ιανουαρίου 2018 Δημοσ. 31 Ιανουαρίου 2018 public class MainActivity extends AppCompatActivity { public String tag="habos"; String gender="male"; String exercise="high"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new Title().execute(); } private class Group { private String operator; private List<Rule> rules; public String getOperator() { return operator; } public void setOperator(String operator) { this.operator = operator; } public List<Rule> getRules() { return rules; } public void setRules(List<Rule> rules) { this.rules = rules; } public boolean parseRule(){ //Log.i(MainActivity.this.tag,"hello"); return true; } } } Σε Android έχω,εν συντομία, τον παραπάνω κώδικα (έχω αφαιρέσει άσχετα τμηματά του). Αντιμετωπίζω πρόβλημα με την parseRule. Για κάποιο λόγο, όταν χρησιμοποιώ μέσα της κάποια μεταβλητή του MainActivity, η εφαρμογή πετάει NullPointerException. Δηλαδή, αν γράψω public boolean parseRule(){ return true;} ή public boolean parseRule(){ Log.i("habos","hello"); return true;} η εφαρμογή δουλεύει σωστά, αλλά έτσι όπως είναι τώρα γραμμένο, πετάει το exception. Τα δεδομένα αρχικοποιούνται μέσω Gson και κατά τα άλλα δουλεύουν κανονικά, δηλαδή μπορώ να τυπώσω το operator ή τις μεταβλητές του Rules. Τι φταίει;
Dinos_12345 Δημοσ. 31 Ιανουαρίου 2018 Δημοσ. 31 Ιανουαρίου 2018 Νομίζω πως πρέπει να κάνεις reference τα outer class attributes με SomeClass.attribute αντί SomeClass.this.attribute. Δηλαδή στην περίπτωση σου MainClass.tag.
Shai-Hulud Δημοσ. 31 Ιανουαρίου 2018 Μέλος Δημοσ. 31 Ιανουαρίου 2018 ωπ έχεις δίκιο, απλά πρέπει επίσης να κάνω το tag static (public static String tag="habos";)
Dinos_12345 Δημοσ. 31 Ιανουαρίου 2018 Δημοσ. 31 Ιανουαρίου 2018 9 λεπτά πριν, Shai-Hulud είπε ωπ έχεις δίκιο, απλά πρέπει επίσης να κάνω το tag static (public static String tag="habos" Ναι είναι κανόνας για να κάνεις reference πράγματα μέσα από inner class.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα