Реализация кнопки внутри всплывающего окна для Android
Ниже вы можете увидеть скрипт, который отображает данные из базы данных SQLite во всплывающем окне. Мой вопрос заключается в том, как я могу реализовать кнопку внутри этого окна для выполнения некоторых задач
вот код:
package com.example.asus.sqlliteproject;
import android.app.AlertDialog;
import android.database.Cursor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
DataBaseHelper myDB;
EditText Name,LastName,Grades;
Button AddData,ViewData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myDB = new DataBaseHelper(this);
Name = (EditText)findViewById(R.id.name);
LastName = (EditText)findViewById(R.id.lastName);
Grades = (EditText)findViewById(R.id.Grades);
AddData = (Button)findViewById(R.id.addDataButton);
ViewData = (Button)findViewById(R.id.view);
addData();
}
public void addData () {
AddData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean inserted = myDB.insertData(Name.getText().toString(),
LastName.getText().toString(),
Grades.getText().toString());
if (inserted) {
Toast.makeText(MainActivity.this, "Text Inserted!", Toast.LENGTH_SHORT).show();
} else
Toast.makeText(MainActivity.this, "Unsuccessful!", Toast.LENGTH_SHORT).show();
}
});
}
public void viewAll () {
ViewData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Cursor res = myDB.getAllData();
if (res.getCount() ==0){
// show some message
showMessage("Error", "Nothing found");
return;
}
StringBuffer buffer = new StringBuffer();
while (res.moveToNext()) {
buffer.append("ID :"+ res.getString(0)+"\n");
buffer.append("Name :"+ res.getString(1)+"\n");
buffer.append("LastName :"+ res.getString(2)+"\n");
buffer.append("Grade :"+ res.getString(3)+"\n\n");
}
// show all data here
showMessage("Data",buffer.toString());
}
});
}
public void showMessage (String title, String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(message);
builder.show();
}
}
и вот скриншот приложения и что я хочу реализовать:
6 ответов
http://developer.android.com/guide/topics/ui/dialogs.html
builder.setPositiveButton("buttontext", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//do some shit
}
Если вы хотите изменить свою пользовательскую кнопку - в левом углу с пользовательскими свойствами, вы должны использовать "пользовательский макет" для AlertBox.
Что-то вроде этого:
View tmLayout = View.inflate(ctx, R.layout.myalert, null);
TextView header= (TextView) tmLayout.findViewById(R.id.header);
Button btn= (Button) tmLayout.findViewById(R.id.btn);
btntzsetcur.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//callback
}
});
header.setText("header);
btn.setText("btn");
alerboxTimeZone = new AlertDialog.Builder(ctx).create();
alerboxTimeZone.setView(tmLayout);
Конечно, вы должны использовать XML-файл.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/header"
style="@style/whitetext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/empty" />
<LinearLayout
android:id="@+id/wrap"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/empty"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>
Вы можете сделать собственный диалог с пользовательским представлением.
Dialog dialog = new Dialog(_context);
dialog.setContentView(YOUR_CUSTOM_VIEW); // put your xml file instead of YOUR_CUSTOM_VIEW
поместите кнопки или все, что вам нужно, в ваш XML-файл и доберитесь до ваших кнопок следующим образом:
Button button = dialog.findViewById(BUTTON_ID); // R.id.YOUR_BUTTON
а затем вы можете установить onClickListener и все, что вы хотите для компонента
Попробуй это,
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//Your code
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//Your code
}
});
Это просто.
public void showMessageDialog(String title , String Message)
{
AlertDialog dialog = new AlertDialog.Builder(Main3Activity.this)
.setTitle(title)
.setMessage(Message)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//add your code here...
}
})
.show();
}
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
context);
// set title
alertDialogBuilder.setTitle("Your Title");
// set dialog message
alertDialogBuilder
.setMessage("Click yes to exit!")
.setCancelable(false)
.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
// if this button is clicked, close
// current activity
MainActivity.this.finish();
}
})
.setNegativeButton("No",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
// if this button is clicked, just close
// the dialog box and do nothing
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
});