java - 如何在重写 Activity 的方法之一的同时启动 Activity?

标签 java android android-activity overriding

我有两个类,它们都扩展了 Activity

MainActivity.java

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout activityLayout = new LinearLayout(this);
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.MATCH_PARENT);
        activityLayout.setLayoutParams(lp);
        activityLayout.setOrientation(LinearLayout.VERTICAL);
        activityLayout.setPadding(16, 16, 16, 16);
        activityLayout.addView(new Button(this));
        setContentView(activityLayout);

        new Permissions() {
            @Override
            public void onPermissionRefused() {
                Toast.makeText(getBaseContext(), "Refused", Toast.LENGTH_SHORT).show();
            }
        }.requestPermissions(this);
    }
}

权限.java

public class Permissions extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.AppTheme_Dialog); // Custom theme to make Activity like a Dialog
        super.onCreate(savedInstanceState);
        onPermissionRefused();
    }

    public void requestPermissions(Activity activity, String... permissions) {
        startActivity(new Intent(activity, Permissions.class));
    }

    public void onPermissionRefused() {

    }
}

我想要做的是启动Permissions Activity,同时覆盖它的onPermissionRefused()方法。然而,我尝试过的两种方法都不起作用。

new Permissions() {
            @Override
            public void onPermissionRefused() {
                Toast.makeText(getBaseContext(), "Refused", Toast.LENGTH_SHORT).show();
            }
        }.requestPermissions(this);

不传递覆盖并用以下代码交换该代码: startActivity(new Intent(this, Permissions.class)); 甚至不允许我覆盖该方法。我怎样才能实现这个目标?

最佳答案

第1步.创建Permissions的子类

class MyPermissionsActivity extends Permissions {
            @Override
            public void onPermissionRefused() {
                Toast.makeText(getBaseContext(), "Refused", Toast.LENGTH_SHORT).show();
            }

}

第 2 步:在应用程序 list 中声明该子类

第 3 步:按如下方式启动 Activity :

Intent i = new Intent(context, MyPermissionsActivity.class);
currentActivity.startActivity(i);

关于java - 如何在重写 Activity 的方法之一的同时启动 Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46127076/

相关文章:

java - 使用自定义版本 ID 将对象上传到 Amazon S3

java - 尝试向 firebase 服务器发送消息时出现异常

android - 从非 Activity 类调用主 Activity

php - 针对用户特定 Activity 提要的优化 MySQL 设计

android - 即使在调用 onDestroy() 之后 Activity 实例仍然存在

java - log4j2 不适用于 tomcat

java - 每5秒用java扫描一个表sql

java - TreeMap 中的二分查找

android - 相机记录有时倒置

javascript - cordova-plugin-googlemaps 如何从标记数组触发标记的 info_window