2016-07-16 18 views
0

私はリストビューとダイアログボックスを開く画面のボタンを持つアプリケーションを持っています。ダイアログボックスには、ユーザーがテキストを入力して[追加]をクリックできる1つのEditTextフィールドがあります。 AddボタンのonClickListenerは非同期呼び出しを行い、テキストをapiに渡します。問題がEditTextの値が保存されていません。私はそれをログに表示することさえできません。 Im私は何か簡単なものを欠いていることを確かめるあなたの助けは非難されています。ここにコードがあります。ダイアログのEditText値が保存されていません

SignInActivity.java

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

    Log.v("SignInActivity","Activity has began"); 

    final DancerAdapter adapter = new DancerAdapter(this,oneDancerArrayList,1); 

    Log.v("SignInActivity","DancerAdapter"); 

    listView = (ListView) findViewById(R.id.listView); 
    listView.setAdapter(adapter); 

    getGirlList(); 

    nameInput = (EditText) findViewById(R.id.cr_room_name); 
    loginDancer = (Button) findViewById(R.id.addDancer); 
    loginDancer.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      DialogFragment newFragment = new AddDancerDialog(); 
      newFragment.show(getFragmentManager(), "newDancer"); 
     } 
    }); 

    static public class AddDancerDialog extends DialogFragment { 
     @Override 
     public Dialog onCreateDialog(Bundle savedInstanceState) { 
      AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
      builder.setView(R.layout.signin_dialog); 

      LayoutInflater inflater = LayoutInflater.from(getContext()); 
      final View dialogview = inflater.inflate(R.layout.signin_dialog, null); 

      //final EditText dancerName = (EditText)dialogview.findViewById(R.id.etDancerName); 

      builder.setMessage("Login New Dancer") 
        .setPositiveButton("Add", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          final ProgressBar newProgress = (ProgressBar)dialogview.findViewById(R.id.progressBar); 
          final EditText dancerName = (EditText)dialogview.findViewById(R.id.etDancerName); 

          String nameSubmit = dancerName.getText().toString(); 
          Log.v("SignInActivity-Dialog",nameSubmit); 
          newProgress.setVisibility(View.VISIBLE); 

          AsyncHttpClient client = new AsyncHttpClient(); 
          RequestParams params = new RequestParams(); 
          params.put("action", "addDancer"); 
          params.put("name",nameSubmit); 

          Log.v("SignInActivity-Dialog", "Add Dancer Function"); 
          Log.v("SignInActivity-Dialog",dancerName.getText().toString()); 

          client.post("http://peekatu.com/apiweb/girlList.php", params, 
            new AsyncHttpResponseHandler() { 
             @Override 
             public void onSuccess(String response) { 
              Log.v("response", response); 
              responseString2 = response; 
              //parseDancerList(response); 
              Log.v("SignInActivity",response); 
             } 

             @Override 
             public void onFailure(Throwable error, String content) { 
              Log.v("response", "response failed network error"); 
              //waitncall(true); 
             }  
            }); 
         } 
        }) 
        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
         } 
        }); 
      return builder.create(); 
     } 
    } 
} 

答えて

1

問題はここにある:ここで

あなたはこのビューでEditTextを検索し、次にダイアログ

builder.setView(R.layout.signin_dialog); 

にビューを設定します。

LayoutInflater inflater = LayoutInflater.from(getContext()); 
final View dialogview = inflater.inflate(R.layout.signin_dialog, null); 
final EditText dancerName = (EditText)dialogview.findViewById(R.id.etDancerName); 

そのdialogViewは膨らまされましたが、それは ダイアログに追加されたビューではありません。彼らは、私は次のように修正することができると思い

..異なっている:それをやった

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

    LayoutInflater inflater = LayoutInflater.from(getContext()); 
    final View dialogview = inflater.inflate(R.layout.signin_dialog, null); 

    builder.setView(dialogview); 

    ... 
} 
+0

!ありがとうございました! – TWeeKeD

関連する問題