是否可以在android应用程序的指定活动中显示警报
我正在尝试构建一个SDK,它必须显示任何给定活动的警报消息,而不在该特定活动中添加任何额外代码 示例:如果我们有一个有10页的android应用程序,如果我们说需要在第6页显示警报(带有名称的活动),只需添加在主活动中调用的SDK即可 可能吗?我们如何做到这一点而不在每个活动中添加代码是否可以在android应用程序的指定活动中显示警报,android,sdk,android-activity,Android,Sdk,Android Activity,我正在尝试构建一个SDK,它必须显示任何给定活动的警报消息,而不在该特定活动中添加任何额外代码 示例:如果我们有一个有10页的android应用程序,如果我们说需要在第6页显示警报(带有名称的活动),只需添加在主活动中调用的SDK即可 可能吗?我们如何做到这一点而不在每个活动中添加代码 更新:基本上,我们希望识别应用程序中活动的数量,并在任何给定活动上显示警报消息,而无需在活动中添加单行代码,但我们可以在MainActivity中添加代码。您可以在那里创建一个类,创建警报消息,然后随时调用它。我
更新:基本上,我们希望识别应用程序中活动的数量,并在任何给定活动上显示警报消息,而无需在活动中添加单行代码,但我们可以在MainActivity中添加代码。您可以在那里创建一个类,创建警报消息,然后随时调用它。我想当你说警报时,你指的是警报对话框
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方法。创建一个BaseActivity
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();
}
public class BaseActivity extends Activity{
public void showDialog() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
BaseActivity.this);
// add extra parameters
alertDialog.show();
}
}
class your_activity extends BaseActivity{
// here you can use showDialog
}
并使用BaseActivity扩展每个活动
public class BaseActivity extends Activity{
public void showDialog() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
BaseActivity.this);
// add extra parameters
alertDialog.show();
}
}
class your_activity extends BaseActivity{
// here you can use showDialog
}
按照步骤操作
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) {
}
});
}
}
创建一个实用程序类。在这个类中为show alert创建方法。下面是简单的代码,您可以在任何地方使用它。您可以通过传递alert的标题和消息从每个活动调用它。这不是预期的,您的解决方案要求开发人员更改我们要显示警报的所有活动。作为SDK分发者,我不想要求开发人员更改他们的所有活动以扩展BaseActivity。想法是,MainActivity中应该有一行调用。这不是预期的,您的解决方案要求开发人员更改我们要显示警报的所有活动。想法是,如果您看到问题中的示例,我们希望在第6个活动中显示警报,而不在第6个活动中添加一行代码(但您可以在MainActivity中添加代码)。