2017-03-07 3 views
-2

Ich habe eine Schaltfläche erstellt, die beim Klicken öffnet einen AlertDialog für die Eingabe wo Position ist eine globale Variable .. das Problem ist auch nach dem Zuweisen der Variablen Ort einen Wert außerhalb der OnClickListener seine immer noch Null zeigt ...Globale Variable Wert nicht geändert

String location = ""; 
TextView details; 
TextView cityName; 
TextView temp; 
Button locationInput; 
static String tempString = ""; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    details = (TextView) findViewById(R.id.details_field); 
    cityName = (TextView) findViewById(R.id.city_name); 
    temp = (TextView) findViewById(R.id.current_temperature_field); 
    locationInput = (Button) findViewById(R.id.button_location_input); 


    locationInput.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this); 
      LayoutInflater inflater = MainActivity.this.getLayoutInflater(); 
      View view = inflater.inflate(R.layout.dialog_box,null); 
      alertDialog.setView(view); 
      alertDialog.setTitle("Enter the location"); 

      final EditText locationInput = (EditText) view.findViewById(R.id.location_input); 
      locationInput.setInputType(InputType.TYPE_CLASS_TEXT); 

      alertDialog.setPositiveButton("Accept", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        location = locationInput.getText().toString(); 
        Log.i("Location",location); 
        locationInput.setVisibility(View.GONE); 
        tempString = location; 
        dialog.dismiss(); 
       } 
      }); 

      alertDialog.setNegativeButton("Deny", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 

        dialog.dismiss(); 
       } 
      }); 

      AlertDialog create = alertDialog.create(); 
      create.show(); 
     } 
    }); 
+0

Haben Sie erklärt den ‚Standort‘ Variable als String & Doe es global deklariert? –

+0

yo done it ... hat das in Frage gestellt .. –

+0

Bitte überprüfen Sie noch einmal, ob editText R.id.location_input im jeweiligen Layout vorhanden ist oder nicht. Überprüfen Sie mit Strg + B. Irgendwann kleine Fehler machen nullpointer Exp –

Antwort

0

Bitte ersetzen Sie den Code aus Alertdialog zu Dialog wie unten, sollte es für Sie sein Werk

Dialog dialog = new Dialog(context); 
     dialog.setContentView(R.layout.custom); 
     dialog.setTitle("Title..."); 

     // set the custom dialog components - text, image and button 
     TextView text = (TextView) dialog.findViewById(R.id.text); 
     text.setText("Android custom dialog example!"); 
     ImageView image = (ImageView) dialog.findViewById(R.id.image); 
     image.setImageResource(R.drawable.ic_launcher); 

     Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK); 
     // if button is clicked, close the custom dialog 
     dialogButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       dialog.dismiss(); 
      } 
     }); 

     dialog.show(); 
+0

ich habe es nicht bekommen ... Ich möchte die Standortvariable verwenden, die Benutzer in den Alarmdialog in der API-URL eingeben, um das Wetter zu bekommen .. so wie wird das helfen ...? –