2017-11-22 8 views
1

現在、AlertDialogボックスからのユーザー入力を処理するのに苦労しています。すべてうまく動作しますが、私はそれを保存して別の関数内でアクセスするために、ユーザー入力をどうするべきかわかりません。android StudioのAlertDialogからuserInputを処理する

private void promptUser() { 
    LinearLayout layout = new LinearLayout(this); 
    layout.setOrientation(LinearLayout.VERTICAL); 

    final EditText promptTitle = new EditText(this); 
    promptTitle.setHint("Title"); 
    layout.addView(promptTitle); 

    userPrompt = new AlertDialog.Builder(this); 
    userPrompt.setView(layout); 

    userPrompt.setTitle("Enter map information").setView(layout); 
    userPrompt.setPositiveButton("Create", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      Log.i("AlertDialog", "Create button was hit"); 
      Log.i("AlertDialog", "This is the text that was entered:" + promptTitle.getText().toString()); 
      userInputs = promptTitle.getText().toString(); 
     } 
    }); 
    userPrompt.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      Log.i("AlertDialog", "Cancel button was hit"); 
     } 
    }); 

    userPrompt.show(); 
} 

と私は関数を呼び出す:

public void onMapClick(LatLng point) { 

    promptUser() 
    //Log.d(userInputs.get(0), "COOL"); 

} 

私が遭遇してる主なエラーは)私のメソッドpromptUser(呼び出した後、すべてが実行されますが、コードの次の数行にはないということですユーザーがPositiveButtonをクリックするのを待ちます。たとえば、私のログには、「ユーザー入力:null」と表示されます。これは、tempStringはまだ使用できないためです。次のコード行を実行する前に、ユーザーがsubmitを押すまで関数を待たせることができますか?

答えて

0

ポジティブボタンコールバックの内側にonMapClickを呼び出します。

userPrompt.setPositiveButton("Create", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
     userInputs = promptTitle.getText().toString(); 
     onMapClick(); 
    } 
}); 

十分なコードを提供していないため、これが正しいかどうかを確認するのは少し難しいですが、これがあなたの求めるものです。

+0

謝罪。より多くのコードを編集して、私がしようとしていることを正確に示します。 – NoahK

関連する問題