Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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
Java 如何在覆盖某个活动的同时启动该活动';什么方法?_Java_Android_Android Activity_Overriding - Fatal编程技术网

Java 如何在覆盖某个活动的同时启动该活动';什么方法?

Java 如何在覆盖某个活动的同时启动该活动';什么方法?,java,android,android-activity,overriding,Java,Android,Android Activity,Overriding,我有两个类,它们都扩展了活动 MainActivity.java public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout activityLayout = new LinearLayout(t

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

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);
    }
}
Permissions.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
活动
,同时覆盖它的
onpermissionseeded()
方法。然而,我尝试过的两种方法都不起作用

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

不传递覆盖并将该代码替换为:
startActivity(newintent(this,Permissions.class))甚至不允许我重写该方法。我怎样才能做到这一点呢?

你不能。活动必须在清单中声明,不能以这种方式声明匿名内部类(即使可以,它也不会有正确的构造函数,因为对父类的隐式引用)。如果需要,创建一个真正的子类,并通过intent传递任何必要的变量。

步骤1。创建权限的子类

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

}
第二步。在应用程序清单中声明该子类

第三步。开展以下活动:

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