2016-05-16 5 views
-2

Meine Anwendung hat zwei Schaltflächen, die verschiedene Aufgaben die erste Schaltfläche funktioniert (id: "CalcBtn"), aber die zweite Schaltfläche (ID: Web), die ich einen Browser öffnen möchte, funktioniert nicht . Wenn ich den Emulator öffne, startet der Klicker für die zweite Schaltfläche die Website nicht oder erkennt den Klick selbst nicht.Android Studio - OnClickListener nicht erkennen Klicken Sie auf

public class MainActivity extends AppCompatActivity { 

EditText editText; 
EditText editText2; 
EditText editText3; 

Button CalcBtn; 
Button web; 

TextView Output; 

double a, b, c, d, x1, x2; 

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

    editText = (EditText) findViewById(R.id.editText); 
    editText2 = (EditText) findViewById(R.id.editText2); 
    editText3 = (EditText) findViewById(R.id.editText3); 

    CalcBtn = (Button) findViewById(R.id.CalcBtn); 
    web = (Button) findViewById(R.id.web); 

    Output = (TextView) findViewById(R.id.Output); 

    CalcBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(!editText.getText().toString().equals("") && !editText2.getText().toString().equals("") 
        && !editText3.getText().toString().equals("")) { 

       a = Double.parseDouble(editText.getText().toString()); 
       b = Double.parseDouble(editText2.getText().toString()); 
       c = Double.parseDouble(editText3.getText().toString()); 

       d = Math.pow(b, 2) - 4*a*c; 

       if (d == 0) { 
        x1 = -b/(2*a); 
        Output.setText("d = " + d + "\nx = " + x1); 
       } else if (d < 0) { 
        Output.setText("No Real Roots"); 
       } else if (d > 0) { 
        x1 = (-b + Math.sqrt(d))/(2*a); 
        x2 = (-b - Math.sqrt(d))/(2*a); 
        Output.setText("d = " + d + "\nx = " + x1 + "\nx2 = " + x2); 

        web.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          Intent web = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.purplemath.com/modules/quadform.htm")); 
          startActivity(web); 
         } 
        }); 

       } 
      } 
     } 
    }); 
    } 
} 
+1

Sie können nicht ausführen 'onClickListener' innerhalb eines anderen' onClickListener'. –

+0

@vrundpurohit er kann verschachtelte onClickListener durchführen, aber es ist keine gute Praxis ... –

+0

wenn Sie einen Teil der Web-Taste auf Ihrem CalBtn-Click-Ereignis als warum Sie ClickListener Web-Button implementieren möchten. tun Sie einfach Ihre Logik in diesem Zustand, anstatt Click-Ereignis der Web-Taste durchzuführen. –

Antwort

0

setzen Sie Ihre web Click-Ereignis Taste außerhalb des Click-Ereignis CalcBtn. web Schaltfläche Klick-Listener ist innerhalb von CalcBtn Klick-Ereignis, das nicht erkannt werden wird sogar.

Web-Schaltfläche klicken Ereignis

web.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           Intent web = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.purplemath.com/modules/quadform.htm")); 
           startActivity(web); 
          } 
         }); 

CalcBtn Schaltfläche klicken Ereignis

CalcBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(!editText.getText().toString().equals("") && !editText2.getText().toString().equals("") 
        && !editText3.getText().toString().equals("")) { 

       a = Double.parseDouble(editText.getText().toString()); 
       b = Double.parseDouble(editText2.getText().toString()); 
       c = Double.parseDouble(editText3.getText().toString()); 

       d = Math.pow(b, 2) - 4*a*c; 

       if (d == 0) { 
        x1 = -b/(2*a); 
        Output.setText("d = " + d + "\nx = " + x1); 
       } else if (d < 0) { 
        Output.setText("No Real Roots"); 
       } else if (d > 0) { 
        x1 = (-b + Math.sqrt(d))/(2*a); 
        x2 = (-b - Math.sqrt(d))/(2*a); 
        Output.setText("d = " + d + "\nx = " + x1 + "\nx2 = " + x2); 



       } 
      } 
     } 
    }); 
+0

Der Knopf funktioniert immer noch nicht .-. Ich habe das Web onClickListener über den CalcBtn OnClickListener verschoben, erkennt es aber immer noch nicht. Ich bin mir nicht sicher, ob ich es richtig eingegeben habe. – TheShadowsLynx

+0

Dies ist ein guter Vorschlag für Stil, aber ich denke nicht, dass es dein Problem ist. Verwenden Sie Ihre Debugger- oder Ablaufverfolgungsausführung, um sicherzustellen, dass Sie die Verzweigungen ausführen und den Code ausführen, von dem Sie glauben, dass er Sie sind. Ich habe gerade ein schnelles Mock-up erstellt und den Click-Listener von einem anderen aus auf einen Emulator mit API 23 eingestellt. – Cheticamp

Verwandte Themen