我正在尝试构建一个SDK,它必须在任何给定的活动上显示警报消息,而不在该特定活动中添加任何额外的代码。
示例:如果我们有一个包含10个页面的Android应用程序,并且如果我们说我们需要通过简单地添加在主要活动中调用的SDK来显示第6页的警报(带名称的活动)。
有可能吗?如果不在每个活动中添加代码,我们怎么做呢?
更新:基本上想要识别应用程序中的活动数量并在任何给定活动上显示警报消息,而不在活动中添加单行代码,但我们可以在MainActivity中添加代码。
答案 0 :(得分:2)
按照步骤
1)创建 Utility.java
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
public class Utility {
public interface AlertNeutral {
public abstract void NeutralMathod(DialogInterface dialog, int id);
}
public static void showAlert(final Context mContext, final String title, final String msg, final String buttonCaption, final boolean isCancelable, final AlertNeutral target) {
try {
((Activity) mContext).runOnUiThread(new Runnable() {
@Override
public void run() {
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
int imageResource = android.R.drawable.stat_sys_warning;
Drawable image = mContext.getResources().getDrawable(imageResource);
builder.setTitle(title).setMessage(msg).setIcon(image).setCancelable(false).setNeutralButton(buttonCaption, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
target.NeutralMathod(dialog, id);
}
});
AlertDialog alert = builder.create();
alert.setCancelable(isCancelable);
alert.show();
}
});
} catch (Throwable e) {
e.printStackTrace();
}
}
}
2)从你想要的任何活动中调用上述功能。
import android.app.Activity;
import android.content.DialogInterface;
import android.os.Bundle;
import com.example.demo.Utility.AlertNeutral;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Utility.showAlert(this,"Demo Alert Title", "Demo Alert Message", "Demo Button Ok", true, new AlertNeutral() {
@Override
public void NeutralMathod(DialogInterface dialog, int id) {
}
});
}
}
答案 1 :(得分:0)
您可以在那里创建一个类并在那里创建警报消息,然后随时调用它。我想当你说警报你的意思是警告对话。
AlertDialog alertDialog;
public CustomAlertDialog(Activity activity) {
this.activity = activity;
buildDialog();
}
private void buildDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(activity).setView(popupView);
alertDialog = builder.create();
//here create your dialog
}
public void showDialog () {
alertDialog.show();
}
然后你所要做的就是发起CustomAlertDialog
并致电showDialog
方法。如果你想以某种方式解雇它,请使用dismissDialog方法。
答案 2 :(得分:0)
创建BaseActivity
public class BaseActivity extends Activity{
public void showDialog() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
BaseActivity.this);
// add extra parameters
alertDialog.show();
}
}
并使用BaseActivity扩展每个活动
class your_activity extends BaseActivity{
// here you can use showDialog
}
答案 3 :(得分:-1)
public class Alert {
public static void showAlert(Context context, String title, String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(title);
builder.setMessage(message);
builder.setPositiveButton("OK", null);
AlertDialog alertDialog = builder.create();
alertDialog.show();
}