Создание собственных диалогов
Добавлено: 07 фев 2014, 01:29
Здравствуйте! При запуске на эмуляторе выдает ошибку "Unfortunately ExampleApp has stopped".
[syntax=java]import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
public class CustomDialogApp extends Activity implements View.OnClickListener{
private static final int ID_D = 0;
@Override
public void onCreate(Bundle saveInstancedState){
super.onCreate(saveInstancedState);
setContentView(R.layout.main_layout);
}
@Override
public void onClick(View view) {
showDialog(ID_D);
}
protected Dialog onCreateDialog(int id){
switch (id){
case ID_D:
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_layout, (ViewGroup) findViewById(R.id.toast_layout));
TextView text = (TextView) findViewById(R.id.textView);
text.setText("Are you sure you want to exit?");
ImageView image = (ImageView) findViewById(R.id.imageView);
image.setImageResource(R.drawable.icon);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(layout);
builder.setMessage("Custom dialog");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
CustomDialogApp.this.finish();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
}
});
builder.setCancelable(false);
return builder.create();
default: return null;
}
}
}
[/syntax]
Main Layout:
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Custom Dialog!"
android:id="@+id/button"
android:onClick="onClick"/>
</LinearLayout>[/syntax]
Custom Layout:
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ccc"
android:id="@+id/toast_layout"
android:padding="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="New Text"
android:textColor="#000"
android:id="@+id/textView"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:id="@+id/imageView"
android:layout_marginRight="10dp"/>
</LinearLayout>[/syntax]
[syntax=java]import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
public class CustomDialogApp extends Activity implements View.OnClickListener{
private static final int ID_D = 0;
@Override
public void onCreate(Bundle saveInstancedState){
super.onCreate(saveInstancedState);
setContentView(R.layout.main_layout);
}
@Override
public void onClick(View view) {
showDialog(ID_D);
}
protected Dialog onCreateDialog(int id){
switch (id){
case ID_D:
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_layout, (ViewGroup) findViewById(R.id.toast_layout));
TextView text = (TextView) findViewById(R.id.textView);
text.setText("Are you sure you want to exit?");
ImageView image = (ImageView) findViewById(R.id.imageView);
image.setImageResource(R.drawable.icon);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(layout);
builder.setMessage("Custom dialog");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
CustomDialogApp.this.finish();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
}
});
builder.setCancelable(false);
return builder.create();
default: return null;
}
}
}
[/syntax]
Main Layout:
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Custom Dialog!"
android:id="@+id/button"
android:onClick="onClick"/>
</LinearLayout>[/syntax]
Custom Layout:
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ccc"
android:id="@+id/toast_layout"
android:padding="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="New Text"
android:textColor="#000"
android:id="@+id/textView"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:id="@+id/imageView"
android:layout_marginRight="10dp"/>
</LinearLayout>[/syntax]