Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.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_Android Activity_Lifecycle_Activity Finish - Fatal编程技术网

Android 在自己的类中使用活动方法

Android 在自己的类中使用活动方法,android,android-activity,lifecycle,activity-finish,Android,Android Activity,Lifecycle,Activity Finish,我试图在非活动类中使用finish()方法,但遇到以下异常: java.lang.ClassCastException: android.app.Application cannot be cast to com.mypackage.MyActivity 下面是我尝试做的一个非常简单的例子: class MyActivity extends Activity { // code here // call MyClass.exampleMethod } class MyCl

我试图在非活动类中使用
finish()
方法,但遇到以下异常:

java.lang.ClassCastException: android.app.Application cannot be cast to com.mypackage.MyActivity
下面是我尝试做的一个非常简单的例子:

class MyActivity extends Activity {
    // code here

    // call MyClass.exampleMethod 
}

class MyClass {

    public static void exampleMethod(Context context) {
        Intent intent = new Intent(context, SecondActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
        ((MyActivity)context).finish(); // in this line exception
    }   
}

你能试试这个吗。我不确定,但它应该有效

public static void exampleMethod(Activity my_activity) {
            Intent intent = new Intent(my_activity, SecondActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            my_activity.startActivity(intent);
            ((MyActivity)my_activity).finish(); // in this line exception
        }
或者你可以试试广播接收机。下面是我已经给出的一个例子:

如果您在广播接收器中遇到任何问题,您可以询问。

试试这个:

// try this 
 ((Activity)context).finish();
public class MyClass {
    public static void exampleMethod(Context context, Activity activity) {
        Intent intent = new Intent(context, LoginActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
        activity.finish(); // in this line exception
    }
}

MyClass.exampleMethod(getApplicationContext(), this);

MyClass是MyActivity的子类吗?您如何调用MyClass.exampleMethod..您可以发布代码吗?不,MyClass不是MyActivity的子类。在这种情况下,您需要找到一些其他功能,如广播发送方或接收方。或者您需要将活动的对象传递给我的类,然后使用该活动对象完成它;startActivity是一种上下文而不是Activity的方法,但您可以传递它,因为Activity继承了context那么为什么还要再次强制转换到MyActivity?是的,如果他想从Activity类调用函数,他也可以直接使用。