2016-05-26 6 views
-1

Dies ist mein Code in Java:Android Kontext getPackageManager hasSystemFeature

public class TestAudio extends Activity { 
    private TextView t1; 
    private Context context; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_test_audio); 
     t1 = (TextView)findViewById(R.id.t1); 
     System.out.println("aaaaaaaaaaaaaa"); 
     PackageManager packageManager = context.getPackageManager(); 

     System.out.println("bbbbbbbbbbbbbb"); 
     if(packageManager.hasSystemFeature(PackageManager.FEATURE_MICROPHONE)){ 
      t1.setText("I'm here"); 
     }else{ 
      t1.setText("gg"); 
     } 

    } 

Warum Reaktion stoppt, wenn es zwischen den beiden system.out.print auf den Code ausführt?

Antwort

1

Ich nehme an, dass der Fehler Ihr Erhalten NPE ist. Da Ihre context noch nicht initialisiert wurde. Initialisiere es zuerst.

+0

Thank you! Jetzt weiß ich, was das Problem ist, ich kann nicht nur ein Context-Objekt instanziieren – MarvinC

+0

Machen Sie Ihren Beitrag richtig als Antwort, indem Sie die Antwort akzeptieren, die Ihnen geholfen hat @MarvinC Cheers! –

1

Sie haben Ihren Kontext nicht initialisiert. Um den Paketmanager zu erhalten, können Sie den Kontext Ihrer Aktivität verwenden. Holen Sie sich das Kontextaktivität Paket-Manager zu initialisieren:

PackageManager packageManager = this.getPackageManager(); 

Oder einfach

PackageManager packageManager = getPackageManager(); 
+0

Danke! Jetzt weiß ich, was das Problem ist, ich kann nicht einfach ein Kontextobjekt instanziieren – MarvinC

0

Init Ihrem Kontext, bevor es verwendet werden:

this.context = getApplicationContext(); 
+0

Danke! Jetzt weiß ich, was das Problem ist, ich kann nicht einfach ein Context-Objekt instanziieren – MarvinC