У меня есть диалоговое окно, созданное с использованием класса AlertDialog.Builder, и вызов builder.setView (int resource), чтобы предоставить ему настраиваемый макет для ввода текста.Android: получить значение EditText из DialogBox с пользовательским представлением
Я пытаюсь получить значения из EditTexts на макете, когда пользователь нажимает OK, но при вызове findViewByID() я получаю нулевые ссылки. Чтение вокруг кажется, что это происходит в другом месте, если вы пытаетесь загрузить представление перед вызовом setContentView(). С Builder я, очевидно, не сделал этого, есть ли способ получить представление или мне нужно строить мои диалоги по-другому?
Java и трассировки стека ниже:
// Set up the on click of the Button
Button add = (Button) findViewById(R.id.manage_connections_add_button);
add.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(ManageConnectedServicesActivity.this);
builder.setTitle("Add Service");
builder.setView(R.layout.component_sharing_service_dialogue);
// Set up the buttons on the dialog
builder.setPositiveButton("Add", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// Get the connected service url
EditText url = (EditText) findViewById(R.id.add_sharing_service_url); // This is the offending line
addConnectedService(url.getText().toString()); // Crashes here
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
}
});
builder.show();
}
});
трассировки стека:
12-05 09:54:40.825 1889-1889/uk.mrshll.matt.accountabilityscrapbook E/AndroidRuntime: FATAL EXCEPTION: main
Process: uk.mrshll.matt.accountabilityscrapbook, PID: 1889
java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
at uk.mrshll.matt.accountabilityscrapbook.ManageConnectedServicesActivity$1$1.onClick(ManageConnectedServicesActivity.java:63)
at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:157)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
Диалог EditText url = (EditText). findViewById (R.id.add_sharing_service_url); для получения идентификатора edittext из diague u вам нужно выполнить идентификацию, как это – Nithinlal
отправить u код как развернуть пользовательский вид для диалога – Nithinlal
Возможный дубликат [AlertDialog.Builder с пользовательским макетом и EditText; невозможно получить доступ к просмотру] (http://stackoverflow.com/questions/22655599/alertdialog-builder-with-custom-layout-and-edittext-cannot-access-view) – Raghavendra