Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在android应用程序的指定活动中显示警报_Android_Sdk_Android Activity - Fatal编程技术网

是否可以在android应用程序的指定活动中显示警报

是否可以在android应用程序的指定活动中显示警报,android,sdk,android-activity,Android,Sdk,Android Activity,我正在尝试构建一个SDK,它必须显示任何给定活动的警报消息,而不在该特定活动中添加任何额外代码 示例:如果我们有一个有10页的android应用程序,如果我们说需要在第6页显示警报(带有名称的活动),只需添加在主活动中调用的SDK即可 可能吗?我们如何做到这一点而不在每个活动中添加代码 更新:基本上,我们希望识别应用程序中活动的数量,并在任何给定活动上显示警报消息,而无需在活动中添加单行代码,但我们可以在MainActivity中添加代码。您可以在那里创建一个类,创建警报消息,然后随时调用它。我

我正在尝试构建一个SDK,它必须显示任何给定活动的警报消息,而不在该特定活动中添加任何额外代码

示例:如果我们有一个有10页的android应用程序,如果我们说需要在第6页显示警报(带有名称的活动),只需添加在主活动中调用的SDK即可

可能吗?我们如何做到这一点而不在每个活动中添加代码


更新:基本上,我们希望识别应用程序中活动的数量,并在任何给定活动上显示警报消息,而无需在活动中添加单行代码,但我们可以在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中添加代码)。