2017-10-18 15 views
0

Ich habe versucht, zwei verschiedene Möglichkeiten der Ausführung von Code auf Knopfdruck, einer funktioniert und der andere stürzt die App auf meinem Handy, die Android 4.1 hat.App stürzt auf Knopfdruck

Wenn ich click Listener in OnCreate Methode hinzufügen, dann funktioniert es, aber wenn ich es in anderer Methode dann stürzt app (Ich habe Methode Name OnClick-Ereignis für die Schaltfläche hinzufügen).

Diese Werke:

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

    final Button button = (Button) findViewById(R.id.button1); 
    if (button != null) { 
     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar); 
       if (progressBar != null) { 
        progressBar.setVisibility(View.VISIBLE); 
       } 
      } 
     }); 
    } 
} 

Diese stürzt die App auf die Schaltfläche tippen:

protected void playOnClick (View v) { 
     Button button = (Button) v; 
     if (button != null) { 
      ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar); 
      if (progressBar != null) { 
       progressBar.setVisibility(View.VISIBLE); 
      } 
     } 
    } 

Jede Idee, warum? Begann heute Android-Entwicklung zu lernen.

EDIT:

ändern Methode playOnClick von dem öffentlichen Fest Absturz geschützt.

Antwort

0

Die Methode playOnClick von protected auf public ändert den Absturz.

public void playOnClick (View v) { 
    Button button = (Button) v; 
    if (button != null) { 
     ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar); 
     if (progressBar != null) { 
      progressBar.setVisibility(View.VISIBLE); 
     } 
    } 
} 
0

Bedenkt man, dass Ihre Schaltfläche und progressbar vorhanden sind in Ihrem „activity_main“ Layout, die Sicherheit Weg Blick in Ihre onCreate zu binden() sollte so ähnlich sein:

private Button button; 
private ProgressBar progressBar; 

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

    button = (Button) findViewById(R.id.button1); 
    progressBar = (ProgressBar) findViewById(R.id.progressBar); 

    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      progressBar.setVisibility(View.VISIBLE); 
     } 
    }); 
} 

App nicht abstürzen, wenn mit Ihrem methode: