2016-11-06 84 views
0

我已經在我的對話框中實現了窗體,當點擊了肯定的按鈕時,我創建了一個新的對象來創建數據庫。我爲EditText創建了全局變量,但仍然不起作用。我想從他們那裏獲得文本值,我總是會得到空字符串。DialogFragment中的EditText總是返回空字符串

這裏是代碼:

EditText name, desc;

@Override 
@NonNull 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    LayoutInflater inflater = getActivity().getLayoutInflater(); 
    view = inflater.inflate(R.layout.new_dialog, null); 

    name = (EditText) view.findViewById(R.id.workout_name); 
    desc = (EditText) view.findViewById(R.id.workout_description); 


    builder.setView(inflater.inflate(R.layout.new_dialog, null)).setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      MyDbHelper helper = new MyDbHelper (getActivity()); 
      MyObj w = new MyObj(); 

      w.setName(name.getText().toString();); 
      w.setDescription(desc.getText().toString()); 
      w.setLevel(1); 

      long id = helper.createWorkout(w); 
      Toast.makeText(getActivity(), id+"", Toast.LENGTH_LONG).show(); 

      callback.onPositiveButtonClick(); 
     } 
    }).setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 

      callback.onNegativeButtonClick(); 

     } 
    }); 

    return builder.create(); 
} 

任何想法嗎?

+0

沒有,我沒有任何異常 – Aligator

回答

0

在下面的代碼中,您正在充氣new_dialog佈局,並且您的名稱和desc EditTexts屬於此佈局。

view = inflater.inflate(R.layout.new_dialog,null);

name = (EditText) view.findViewById(R.id.workout_name); 
desc = (EditText) view.findViewById(R.id.workout_description); 

但是,當您設置對話框的佈局時,您正在設置new_workout_dialog。你的名字和desc不屬於這個佈局。

builder.setView(inflater.inflate(R.layout.new_workout_dialog, null)) 

而且,即使你使用new_dialog而設置的建設者查看,名稱和desc仍然是不相關的。因爲您在setView方法中完全創建了一個新視圖。

使用視圖變量如下:

builder.setView(view, null)) 
+0

對不起它是沒有問題...在應用程序我有相同的名字......這是我唯一的編輯堆棧網站。 – Aligator

+0

閱讀我的回答最後的聲明。即使這是一個錯字,你的代碼仍然是錯誤的。您正在使用setView方法創建新視圖。使用您之前創建的視圖變量。 –

+0

哦,是的!我錯過了這個抱歉:)它的工作)謝謝 – Aligator