2016-07-16 1 views
0

У меня есть приложение со списком и кнопка на экране, которая открывает диалоговое окно. Диалоговое окно имеет одно поле EditText, где пользователь может ввести текст и нажать «Добавить». onClickListener для кнопки Добавить делает асинхронный вызов и передает текст в api. Задача EditText Значение не сохраняется. Я даже не могу его показать в журнале. Im Im 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

Проблема здесь:

Здесь вы можете установить вид на диалоговое

builder.setView(R.layout.signin_dialog); 

Затем поиск EditText в этой точке зрения:

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