Dialog mit Texteingabe (mind. API8)

  • 6 Antworten
  • Letztes Antwortdatum
A

Andrawit

Neues Mitglied
0
Hallo zusammen,

erstmal vorab: Sollte die Frage hier bereits gestellt worden sein, entschuldige ich mich dafür. Habe versucht per SuFu was ähnliches zu finden. Google war mir auch nicht so sehr behilflich.

Wie schon in der Überschrift zu erkennen, suche ich eine Möglichkeit über einen Dialog einen Text einzugeben. Dieser soll beim Drücken der OK-Schaltfläche in ein TextView übertragen werden.

Bin im Grunde eignetlich schon fündig geworden (Android Developers). Problem dabei ist, dass ich noch ein HTC Desire habe, welches auf Android 2.2.2 läuft (wenn ich mich nicht irre ist das API8) - in der API sind allerdings die Dialogs von der genannten Seite nicht vorhanden.

Gibt es dennoch eine Möglichkeit dass ich das ganze umsetzen kann?

Danke bereits im Voraus

MfG
 
Danke!

Der zweite Link sieht vielversprechend aus. Werde ich morgen mal ausprobieren. Sollte noch was sein, sag ich bescheid :flapper: :D
 
Hallo nochmal,

bin gerade ein bisschen am rumfriemeln mit dem AlertDialog. Habe allerdings eien Verständnisfrage:

Code:
AlertDialog.Builder alert = new AlertDialog.Builder(this);
 
alert.setTitle("Title");
alert.setMessage("Message");
 
// Set an EditText view to get user input 
final EditText input = new EditText(this);
alert.setView(input);
 
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
  String value = input.getText();
  // Do something with value!
  }
});
 
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
  public void onClick(DialogInterface dialog, int whichButton) {
    // Canceled.
  }
});
 
alert.show();

Warum steht vor beim Initialisieren vor dem EditText ein final? Final bedeutet doch, soweit ich es im vorherigen Java-Tutorial gelernt hab, dass etwas nicht mehr geändert werden kann - aber es soll ja geändert werden, was auch funktioniert. Wieso also steht dann das final vorran?



Meine zweite Frage wird voraussichtlich auf das selbe hinauslaufen. Ich möchte nämlich "alert.show();" mit einem onClickListener ausführen. Mein Code sieht dann so aus:

Code:
package boe.project.liftcall;
 
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Button;
import android.widget.EditText;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
 
public class SetActivity extends Activity
{
 TextView tvPhoneNo;
 Button butAendern;
 
 @Override
 protected void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_settings);
  tvPhoneNo = (TextView)findViewById(R.id.tvPhoneNo);
  butAendern = (Button)findViewById(R.id.butAendern);
 
  //Anlegen des AlertDialogs
  final AlertDialog.Builder alert = new AlertDialog.Builder(this);
  alert.setTitle("SMS-Relais");
  alert.setMessage("Bitte Rufnummer eingeben.");
  final EditText input = new EditText(this);
  alert.setView(input);
 
   alert.setPositiveButton("OK", new DialogInterface.OnClickListener() 
   {
    @Override
    public void onClick(DialogInterface dialog, int which) 
    {
     tvPhoneNo.setText(input.getText());
    }
   });
 
   alert.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener()
   {
    @Override
    public void onClick(DialogInterface dialog, int which)
    {  
 
    }
   }); 
 
  butAendern.setOnClickListener(new View.OnClickListener()
  {
   @Override
   public void onClick(View v) 
   {
    alert.show();
   }
  });
 } 
}

Das Ausführen von alert.show() in der OnClick-Methode funktioniert allerdings nur, wenn ich
Code:
 AlertDialog.Builder alert = new AlertDialog.Builder(this);
ersetze durch:
Code:
 final AlertDialog.Builder alert = new AlertDialog.Builder(this);



Und zu guter letzt noch ein Problemchen: Es funktioniert alles so wie es soll - erstmal. Wenn ich aber "Ok" bzw. "Abbrechen" einmal gedrückt habe und dann erneut auf den Ändern-Button klicke damit der AlertDialog aufgeht, stürzt die komplette App ab :(

Hoffe Ihr könnt mir helfen!

MfG

MfG
 
Zuletzt bearbeitet:
Ich benutze das final immer wenn ich Integer/Strings in Listenern und Alertdialogen benutze, sollte das keine Probleme machen würd ich das auf jeden fall so lassen, da es sehr praktischist
 
Hallo,

das mit dem Final ist noch nicht einmal so ein Problem. Solang alles funktioniert sobald ich ein final mit reinschreibe ist das gut. Problem ist allerdings, wenn ich den AlertDialog ein zweites mal aufrufe, stürzt die Activity ab.

Hier der Fehlercode:

Code:
09-23 05:50:42.220: E/AndroidRuntime(364): FATAL EXCEPTION: main
09-23 05:50:42.220: E/AndroidRuntime(364): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
09-23 05:50:42.220: E/AndroidRuntime(364):  at android.view.ViewGroup.addViewInner(ViewGroup.java:1976)
09-23 05:50:42.220: E/AndroidRuntime(364):  at android.view.ViewGroup.addView(ViewGroup.java:1871)
09-23 05:50:42.220: E/AndroidRuntime(364):  at android.view.ViewGroup.addView(ViewGroup.java:1851)
09-23 05:50:42.220: E/AndroidRuntime(364):  at com.android.internal.app.AlertController.setupView(AlertController.java:365)
09-23 05:50:42.220: E/AndroidRuntime(364):  at com.android.internal.app.AlertController.installContent(AlertController.java:206)
09-23 05:50:42.220: E/AndroidRuntime(364):  at android.app.AlertDialog.onCreate(AlertDialog.java:251)
09-23 05:50:42.220: E/AndroidRuntime(364):  at android.app.Dialog.dispatchOnCreate(Dialog.java:307)
09-23 05:50:42.220: E/AndroidRuntime(364):  at android.app.Dialog.show(Dialog.java:225)
09-23 05:50:42.220: E/AndroidRuntime(364):  at android.app.AlertDialog$Builder.show(AlertDialog.java:802)
09-23 05:50:42.220: E/AndroidRuntime(364):  at boe.project.liftcall.SetActivity$3.onClick(SetActivity.java:58)
09-23 05:50:42.220: E/AndroidRuntime(364):  at android.view.View.performClick(View.java:2485)
09-23 05:50:42.220: E/AndroidRuntime(364):  at android.view.View$PerformClick.run(View.java:9080)
09-23 05:50:42.220: E/AndroidRuntime(364):  at android.os.Handler.handleCallback(Handler.java:587)
09-23 05:50:42.220: E/AndroidRuntime(364):  at android.os.Handler.dispatchMessage(Handler.java:92)
09-23 05:50:42.220: E/AndroidRuntime(364):  at android.os.Looper.loop(Looper.java:123)
09-23 05:50:42.220: E/AndroidRuntime(364):  at android.app.ActivityThread.main(ActivityThread.java:3683)
09-23 05:50:42.220: E/AndroidRuntime(364):  at java.lang.reflect.Method.invokeNative(Native Method)
09-23 05:50:42.220: E/AndroidRuntime(364):  at java.lang.reflect.Method.invoke(Method.java:507)
09-23 05:50:42.220: E/AndroidRuntime(364):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-23 05:50:42.220: E/AndroidRuntime(364):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-23 05:50:42.220: E/AndroidRuntime(364):  at dalvik.system.NativeStart.main(Native Method)
 
Hat sich erledigt.

Thema kann geschlossen / gelöscht werden.
 
Zurück
Oben Unten