Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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 原因:java.lang.ClassCastException_Android_Android Intent - Fatal编程技术网

Android 原因:java.lang.ClassCastException

Android 原因:java.lang.ClassCastException,android,android-intent,Android,Android Intent,说明: 当我点击标题栏上的“到”按钮时,我遇到了ClassCast异常。 我的源代码如下: 我的活动代码: public void onClick(View v) { if (v.getId() == R.id.about_us) { if (isInternetConnected()) { System.out.println("about us"); startActivity(new Intent(GridDisp

说明:

当我点击标题栏上的“到”按钮时,我遇到了ClassCast异常。 我的源代码如下:

我的活动代码:

public void onClick(View v) {

    if (v.getId() == R.id.about_us) {

        if (isInternetConnected()) {
            System.out.println("about us");
            startActivity(new Intent(GridDisplayActivity.this, AboutUsActivity.class));
        } else {
            setAlertBox("No Internet Connection");
        }
    }
    if (v.getId() == R.id.hard_copy) {

        if (isInternetConnected()) {
            System.out.println("hard copy");
            startActivity(new Intent(GridDisplayActivity.this,HardCopyActivity.class));
        } else {
            setAlertBox("No Internet Connection");
        }
    }

}
自定义应用程序代码:

public class CustomApplication extends Application {

private Map<String, List<CustomAsyncTask<?,?,?>>> mActivityTaskMap;

public CustomApplication() {
    mActivityTaskMap = new HashMap<String, List<CustomAsyncTask<?,?,?>>>();
}

public void removeTask(CustomAsyncTask<?,?,?> task) {
    for (Entry<String, List<CustomAsyncTask<?,?,?>>> entry : mActivityTaskMap.entrySet()) {
        List<CustomAsyncTask<?,?,?>> tasks = entry.getValue();
        for (int i = 0; i < tasks.size(); i++) {
            if (tasks.get(i) == task) {
                tasks.remove(i);
                break;
            }
        }

        if (tasks.size() == 0) {
            mActivityTaskMap.remove(entry.getKey());
            return;
        }
    }
}

public void addTask(Activity activity, CustomAsyncTask<?,?,?> task) {
    String key = activity.getClass().getCanonicalName();
    List<CustomAsyncTask<?,?,?>> tasks = mActivityTaskMap.get(key);
    if (tasks == null) {
        tasks = new ArrayList<CustomAsyncTask<?,?,?>>();
        mActivityTaskMap.put(key, tasks);
    }

    tasks.add(task);
}

public void detach(Activity activity) {
    List<CustomAsyncTask<?,?,?>> tasks = mActivityTaskMap.get(activity.getClass().getCanonicalName());
    if (tasks != null) {
        for (CustomAsyncTask<?,?,?> task : tasks) {
            task.setActivity(null);
        }
    }
}

public void attach(Activity activity) {
    List<CustomAsyncTask<?,?,?>> tasks = mActivityTaskMap.get(activity.getClass().getCanonicalName());
    if (tasks != null) {
        for (CustomAsyncTask<?,?,?> task : tasks) {
            task.setActivity(activity);
        }
    }
  }
07-26 11:06:10.567: E/AndroidRuntime(381):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
07-26 11:06:10.567: E/AndroidRuntime(381):  at dalvik.system.NativeStart.main(Native Method)
07-26 11:06:10.567: E/AndroidRuntime(381): Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to com.bespoken.android.provider.CustomApplication
07-26 11:06:10.567: E/AndroidRuntime(381):  at com.bespoken.android.GridDisplayActivity.onSaveInstanceState(GridDisplayActivity.java:567)
07-26 11:06:10.567: E/AndroidRuntime(381):  at android.app.Activity.performSaveInstanceState(Activity.java:1114)
07-26 11:06:10.567: E/AndroidRuntime(381):  at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1184)
 07-26 11:06:10.567: E/AndroidRuntime(381):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2469)
 07-26 11:06:10.567: E/AndroidRuntime(381):     ... 12 more
请引导我。 提前感谢。

不要执行
(CustomApplication)getApplication()
,而是在
CustomApplication
类中有一个
静态
CustomApplication
字段,比如
分钟
,在
CustomApplication中设置它。一旦创建
this
并在您想要访问
CustomApplication'
s方法的任何地方使用它

class CustomApplication extends Application
{

private static CustomApplication mInstance;

@Override
void onCreate() {
    super.onCreate();
    mInstance = this;
}

public static CustomApplication getInstance() { return mInstance; }

public void mySpecificMethod() { .... }

}
然后从需要的地方打电话:

CustomApplication.getInstance()->mySpecificMethod()

这里的CustomApplication是什么,您正在xml文件GridDisplayActivity中声明它。java:567这一行是罪魁祸首。GridDisplayActivity的第567行上有什么内容与旋转处理一起有一个asynTask,因此第567行上的“((CustomApplication)getApplication())。detach(this);”在public void onSaveInstanceState(Bundle outState){super.onSaveInstanceState(outState);@Richa Laad我编辑了答案,建议在使用(CustomApplication.getInstance())时使用一段代码。在活动的onSaveInstanceState(Bundle outState)上分离(this),我得到了java.lang。NullPointerException@RichaLaad您的manifest.xml中是否有自定义应用程序Ohh..我第一次没有指定as处理自定义应用程序,谢谢alex的帮助。我已在manifest.xml文件中添加了自定义应用程序,它对我有效。