Mostrar un dialogo en android

Tengo ООН problema: Quiero mostrar un dialogo que hice partir de un layout que tiene un texto y un botón pero никакой entiendo porque меня ставит на карту que la aplicación se detuvo.

Codigo:

public class MainActivity extends AppCompatActivity {

    Button b1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        b1 = (Button) findViewById(R.id.b1);
    }

    public void b1(View view) {

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this);

        View child = getLayoutInflater().inflate(R.layout.dialogo6, null);
        alertDialogBuilder.setView(child);

        final AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);

        Button dismissButton = (Button) alertDialog.findViewById(R.id.boton);
        dismissButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.dismiss();
            }
        });

        alertDialog.show();
    }
}

El dialogo que quiero mostrar:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:text="Alto Titulo Ameo"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/titulo"
    android:textAlignment="center"
    android:textSize="30sp" />

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="340dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:srcCompat="@mipmap/ic_launcher"
            android:id="@+id/imagen" />

        <TextView
            android:text="Descripcion del dialogo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/desc"
            android:textSize="20sp" />

    </LinearLayout>
</ScrollView>

<Button
    android:text="Button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/boton"/>
</LinearLayout>
4
задан 24.12.2016, 21:01
3 ответа

Внутри твоего метода onCreate, где говорит b1 = (Button) findViewById (R.id.b1); tenes, который заменять из-за:

b1 = (Button) findViewById(R.id.boton);

Внутри Метода b1, где говорит View child = getLayoutInflater () .inflate (R.layout.dialogo6, null); tenes, который заменять из-за:

View child = getLayoutInflater().inflate(R.layout.activity_main, null);

Ошибки были одинокими из-за темы ссылок на твой вид. С этим он решается. Это probГ© с моего устройства Samsung S5

1
ответ дан 24.11.2019, 12:02

Если не добавляет LogCat, проблемы могут быть различными, я замечаю 2 вещи, которые нужно проверять:

1) Внутри твоего layout activity_main.xml у тебя должна быть Кнопка с id b1, уверь, что он asГ, - так как этот состоит cГіdigo в том, что он реализует то, что я комментирую:

...
 setContentView(R.layout.activity_main);
 b1 = (Button) findViewById(R.id.b1);
...

2) mГ©todo public void b1(View view) { назван с вида в layout, уверяет определенный, таким образом:

<Button
 ...
 ... 
 android:onClick="b1" />

и 3) проверяет, что внутри твоего layout dialogo6.xml ты считал определенным один botГіn с id boton:

<Button
 android:id="@+id/boton
 ...
 ... />

, который использован aquГ-:

View child = getLayoutInflater().inflate(R.layout.dialogo6, null);
alertDialogBuilder.setView(child);

final AlertDialog alertDialog = alertDialogBuilder.create();
...
Button dismissButton = (Button) alertDialog.findViewById(R.id.boton);
1
ответ дан 24.11.2019, 12:02

есть другая opciГіn, который состоит в том, чтобы создавать Activity (в мишени), с которым ты захотел внутри, и в Manifest распределить признак

android:theme="@style/Theme.AppCompat.Light.Dialog"

Следует отметить, что вся активность останется в способе Dialog. и ты не нуждаешься в том, чтобы импортировать никакого liberia третьих, так как это часть Андроид Студио. Привет

-1
ответ дан 24.11.2019, 12:02