2016-07-07 9 views
5

पर प्रदर्शित नहीं हो रहा है, मैं एंड्रॉइड ऐप डेवलपमेंट के लिए नया हूं, और यह नहीं जानता कि इसे कैसे डिबग करना है। तो मैं एक संवादप्रवाह पर EditText.setText करने की कोशिश कर रहा हूं। यह लॉग पर दाएं स्ट्रिंग को प्रिंट करता है, लेकिन फिर भी .xml फ़ाइल ("यहां आइटम दर्ज करें") के आधार पर पुरानी स्ट्रिंग दिखा रहा है। क्या इसे अपडेट करने का कोई तरीका है?एडिटटेक्स्ट सेटटेक्स्ट डायलॉग फ्रैगमेंट

public class MyAlertDialogFragment extends DialogFragment{ 
public MyAlertDialogFragment() {} 

public static MyAlertDialogFragment newInstance(String desc) { 
    MyAlertDialogFragment frag = new MyAlertDialogFragment(); 
    Bundle args = new Bundle(); 
    args.putString("desc", desc); 
    frag.setArguments(args); 
    return frag; 
} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity()); 
    alertDialogBuilder.setView(R.layout.custom_dialog); 
    alertDialogBuilder.setTitle("Edit to-do list"); 

    final View layout = View.inflate(MainActivity.getAppContext(), R.layout.custom_dialog, null); 
    final EditText mEditText = (EditText) layout.findViewById(R.id.EditDesc); 
    String desc = getArguments().getString("desc"); 
    mEditText.setText(desc); 
    System.out.println("EditText is " + mEditText.getText().toString()); 

    alertDialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // on success 
      EditTodoFragment.EditTodoFragmentListener listener = (EditTodoFragment.EditTodoFragmentListener)getActivity(); 
      listener.onFinishEditDialog(mEditText.getText().toString()); 
     } 
    }); 
    alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
     } 
    }); 

    return alertDialogBuilder.create(); 
} 

}

लॉग फ़ाइल

07-06 21:04:20.738 4115-4115/com.example.light.todolist I/System.out: EditText is Doing grocery 

xml फ़ाइल है:

<TextView 
    android:layout_width="238dp" 
    android:layout_height="wrap_content" 
    android:text="Edit Item Below:" 
    android:id="@+id/EditTitle" 
    android:layout_weight="0.04" /> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/EditDesc" 
    android:text="Enter item here."> 
<requestFocus /> 
</EditText> 

उत्तर

3

आप यू नहीं है संवाद के लिए ले लेआउट व्यू ताकि आप EditText पर टेक्स्ट नहीं देख सकें। कृपया यहाँ के रूप में बदलने के लिए:

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity()); 
    alertDialogBuilder.setTitle("Edit to-do list"); 

    final View layout = View.inflate(MainActivity.getAppContext(), R.layout.custom_dialog, null); 
    alertDialogBuilder.setView(layout); 
+0

आप सही हैं! मुझे setView में लेआउट का उपयोग करना है, अन्यथा, यह इसे पहचान नहीं पाएगा? – user3315093

2

इस प्रयास करें:

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity()); 

LayoutInflater inflater = getActivity().getLayoutInflater(); 
View customView = inflater.inflate(R.layout.custom_dialog, null); 

alertDialogBuilder.setView(customView); 
alertDialogBuilder.setTitle("Edit to-do list"); 

final EditText mEditText = (EditText) customView.findViewById(R.id.EditDesc); 
String desc = getArguments().getString("desc"); 
mEditText.setText(desc); 

alertDialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     // on success 
     EditTodoFragment.EditTodoFragmentListener listener = (EditTodoFragment.EditTodoFragmentListener)getActivity(); 
     listener.onFinishEditDialog(mEditText.getText().toString()); 
    } 
}); 
alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.dismiss(); 
    } 
}); 

return alertDialogBuilder.create(); 
संबंधित मुद्दे