getText un EditText dans un DialogFragment
J'ai un DialogFragment comme celui-ci
La boîte de Dialogue est appelée en cliquant sur le bouton "plus" dans le MainActivity ci-dessous qui est initialement vide. Quand je clique sur "continuer", j'ai créer un bouton et jusqu'à présent cela fonctionne. Je souhaite également que la chaîne que j'ai insérer dans l'EditText dans DialogFragment est indiqué sur le bouton je viens de créer. Mon problème est que je ne peux pas récupérer la chaîne, je suis entré dans l'EditText.
Voici le code:
MainActivity
public class MainActivity extends FragmentActivity implements IProjectDialFrag {
private ProjectDialogFragment projectDialFrag = new ProjectDialogFragment();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_settings:
//TODO
return true;
case R.id.filters:
Intent intent1 = new Intent(MainActivity.this, FiltersActivity.class);
startActivity(intent1);
return true;
case R.id.action_new:
return true;
case R.id.add_button:
Intent intent2 = new Intent(MainActivity.this, ButtonsActivity.class);
startActivity(intent2);
return true;
case R.id.add_project:
projectDialFrag.show(getFragmentManager(), "projectDialog");
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onDialogNegativeClick(DialogFragment dialog) {
return;
}
@Override
public void onDialogPositiveClick(DialogFragment dialog) {
LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.project_dialog_fragment, null);
EditText editText = (EditText) view.findViewById(R.id.project_name);
String projectName = editText.getText().toString();
Button projectButton = new Button(this);
projectButton.setText(projectName);
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.main_layout);
linearLayout.addView(projectButton);
}
}
DialogFrament
public class ProjectDialogFragment extends DialogFragment {
private IProjectDialFrag iProjDialFrag;
@SuppressLint("InflateParams")
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder createProjectAlert = new AlertDialog.Builder(getActivity());
createProjectAlert.setTitle("Create Project");
LayoutInflater inflater = getActivity().getLayoutInflater();
createProjectAlert.setView(inflater.inflate(R.layout.project_dialog_fragment, null))
.setPositiveButton(R.string.conti_nue, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
iProjDialFrag.onDialogPositiveClick(ProjectDialogFragment.this);
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
iProjDialFrag.onDialogNegativeClick(ProjectDialogFragment.this);
}
});
return createProjectAlert.create();
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
iProjDialFrag = (IProjectDialFrag) activity;
}
}
L'Interface
public interface IProjectDialFrag {
public void onDialogPositiveClick(DialogFragment dialog);
public void onDialogNegativeClick(DialogFragment dialog);
}
et le XML de mise en page pour référence:
DialogFragment disposition
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<EditText
android:id="@+id/project_name"
android:inputType="text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="4dp"
android:hint="@string/hint_project_alert" />
</LinearLayout>
MainActivity disposition
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:id="@+id/main_layout">
</LinearLayout>
Où suis-je mal?
Pourquoi vous êtes Gonfler mise en
onDialogPositiveClick(..)
? Mieux pour gonfler dans votreProjectDialogFragment
dans onCreateView(......)
ou dans onCreateDialog(....)
OriginalL'auteur Riccardo | 2014-11-20
Vous devez vous connecter pour publier un commentaire.
Il suffit d'appeler le
findViewById
sur votre boîte de dialogue:Remarque: doit être appelée après
onCreateDialog
.vous êtes les bienvenus 🙂
Quelle méthode est appelée "après
onCreateDialog()
donc je peux relier leEditText
- t-il?OriginalL'auteur Simas
Essayer comme cela,
OriginalL'auteur Akash Moradiya
Vous ne devriez pas bind (
findViewById()
ouButterKnife.bind()
) votre point de vue dans onDialogPositiveClick méthode, ils ne fonctionneront pas.Toujours envisager à l'aide de
onResume()
ouonStart()
fragment du cycle de vie des rappels de vue de liaison. Par exemple, dans votre cas, le code ressemblera à ceci:Où votre
editText
est une variable de classe (EditText editText;
)OriginalL'auteur Serj Ardovic