2016-09-16 31 views
-2

私は、番号を変更するためのダイアログを開くボタンがあります。ボタンはアクティビティにあり、異なるクラスのダイアログを格納するために新しいクラス名ダイアログを生成します。終了後に実行ダイアログ

ダイアログconsigna:クリックボタン上 Dialogs.class

public String consigna(){ 


     AlertDialog.Builder alert = new AlertDialog.Builder(ctxt); 
     alert.setTitle("Nueva temperatura"); 
     alert.setMessage("Agrega una nueva temperatura"); 
     final EditText input = new EditText(ctxt); 
     input.setInputType(InputType.TYPE_CLASS_NUMBER); 
     input.setRawInputType(InputType.TYPE_CLASS_NUMBER); 
     alert.setView(input); 
     alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       data = input.getText().toString(); 

      } 
     }); 
     alert.setNegativeButton("cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       //Put actions for CANCEL button here, or leave in blank 
      } 
     }); 
     alert.show(); 

    return data; 
    } 

MainActivity

//I need change these two values: 

final public double temperatura = 200.3; 
String newData; 

... 

public void onClick(View v) { 

     switch (v.getId()){ 

      case R.id.tempConsigna: 
       dialog = new Dialogs(MainActivity.this); 
       String data = dialog.consigna(); 
       newData = data; 
       break; 

...//other cases... 

問題があるnewData =データです。私はダイアログが閉じていないので、データがありません。ダイアログは他のスレッドで動作しますか?

ダイアログ結果でnewData varを変更するにはどうすればよいですか?それはダイアログクラスにも当てはまりますか?

+0

を。 –

+0

あなたはこれを持つことができますか?リンク?私はそれが何かわかりません。 – WIngenia

+0

私は私の答えを追加しています。 –

答えて

2

あなたは、インターフェイスを介して実装するコールバックメソッド必要があります:あなたはそのためのコールバック・コンセプト(インタフェース)を使用することができます

 public String consigna(final OnConfirm confirm){ 
      final String[] data = new String[1]; 
      AlertDialog.Builder alert = new AlertDialog.Builder(activity); 
      alert.setTitle("Nueva temperatura"); 
      alert.setMessage("Agrega una nueva temperatura"); 
      final EditText input = new EditText(activity); 
      input.setInputType(InputType.TYPE_CLASS_NUMBER); 
      input.setRawInputType(InputType.TYPE_CLASS_NUMBER); 
      alert.setView(input); 
      alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int whichButton) { 
        data[0] = input.getText().toString(); 
        confirm.onConfirm(data[0]); 
       } 
      }); 
      alert.setNegativeButton("cancel", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int whichButton) { 
        //Put actions for CANCEL button here, or leave in blank 
       } 
      }); 
      alert.show(); 

      return data[0]; 
     } 


public interface OnConfirm { 
     void onConfirm(String s); 
    } 

そして、あなたの主な活動で

Dialogs dialog = new Dialogs(MainActivity.this); 
     dialog.consigna(new Dialogs.OnConfirm() { 
      @Override 
      public void onConfirm(String s) { 

       Log.d("data", s); 
      } 
     }); 
+0

パーフェクト、ありがとう!! – WIngenia

0

結果は返されませんが、ダイアログのOKボタンをクリックしてからデータ変数にアクセスしてください。返す必要はありません。

+0

はい、わかっています。しかし、ダイアログの結果でメインアクティビティの変数を変更する方法はありますか? – WIngenia

+0

あなたはあなたが共有したもの以外の活動のコードを共有できますか? –

+0

メインポストBansaiを編集します – WIngenia

関連する問題