2017-05-14 3 views
0

IAndroid Studio: App nicht mit implementiert Anonymous Java Klasse startet

„die Fehlermeldung von 5 bis 14 Dezember gefangen: 39: 13,104 2518-2518/com.example.fdai3744.neueleereapp E/Android Runtime : FATAL AUSNAHME: Hauptprozess: com.example.fdai3744.neueleereapp, PID: 2518 java.lang.RuntimeException: Kann Aktivität instanziiert ...“

und hier ist mein Java-Code

package com.example.fdai3744.neueleereapp; 

import android.net.wifi.p2p.WifiP2pManager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 


    public class MainActivity extends AppCompatActivity { 

     public Button button_1 = (Button) findViewById(R.id.button1); //Button 
     public TextView text1 = (TextView)findViewById(R.id.text1); // Textview 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      button_1.setOnClickListener(new View.OnClickListener() { // Here I add the ActionListener for my button 

       @Override 
       public void onClick(View v) { 
        text1.setText("Button 1 wurde geklickt!"); 
       } 
      }); 
     } 

    } 

Wenn ich meine App starte, gibt der Emulator die Fehlermeldung "App ist gestoppt" aus. Wie soll ich diesen Fehler verhindern?

+0

ist nicht es eine „verursacht durch: eine andere Ausnahme“ im Protokoll? – nandsito

Antwort

1

verursacht durch

public Button button_1 = (Button) findViewById(R.id.button1); //Button 
    public TextView text1 = (TextView)findViewById(R.id.text1); // Textview 

nie zuvor setContentView Ansicht assign()

genannt wird

Ihre modifizierten Code

package com.example.fdai3744.neueleereapp; 

import android.net.wifi.p2p.WifiP2pManager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 


    public class MainActivity extends AppCompatActivity { 

     public Button button_1; 
     public TextView text1; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      button_1 = (Button) findViewById(R.id.button1); //Button 
      text1 = (TextView)findViewById(R.id.text1); // Textview 

      button_1.setOnClickListener(new View.OnClickListener() { // Here I add the ActionListener for my button 

       @Override 
       public void onClick(View v) { 
        text1.setText("Button 1 wurde geklickt!"); 
       } 
      }); 
     } 

    } 
2

Nun, Ihre Ansicht Hierarchie muss am Leben sein, bevor Sie Ihren individuellen abrufen View s davon und die Methode setContentView() bringt es zum Leben (oder instanziiert es).

Wie?

setContentView(View) ist eine Methode, die ausschließlich für Aktivität verfügbar ist. Intern ruft es die setContentView(View) von Windows auf. Diese Methode setzt den Aktivitätsinhalt auf eine explizite Sicht. Diese Sicht wird direkt in die Ansichtshierarchie der Aktivität platziert. Der Aufruf dieser Funktion "sperrt" verschiedene Eigenschaften des Fensters, das nicht von diesen Punkt vorwärts geändert werden kann. Daher wird es nur einmal aufgerufen.

Anstatt also die Ansichten als Instanzvariablen zu initialisieren, instanziiert sie innerhalb onCreate() nach setContentView().

Lesen Sie auch: Android: setContentView and LayoutInflater

Verwandte Themen