java - 无法从 android.app.Application 转换为自定义类型

标签 java android xml

我创建了一个类来保存应用程序范围的变量。我让它扩展了 Activity ,甚至将其包含在 list 中,但我仍然收到此错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.blacksmith/com.example.blacksmith.MainActivity}: java.lang.ClassCastException: android.app.Application cannot be cast to com.example.blacksmith.GlobalVars

这是类(class):

package com.example.blacksmith;

import android.app.Application;

public class GlobalVars extends Application {

    private Boolean DefaultEncrypt;
    private String Password;

    public GlobalVars(){
        DefaultEncrypt = true;
    }

    public void setDefaultEncrypt(Boolean is){
        DefaultEncrypt = is;
    }

    public Boolean getDefaultEncrypt(){
        return DefaultEncrypt;
    }

    public void setPassword(String pass){
        Password = pass;
    }
    public String getPassword(){
        return Password;
    }

}

这是 Android list :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.blacksmith"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="17"
        android:targetSdkVersion="19" />


    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="Blacksmith"
            android:theme="@android:style/Theme.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".PasswordCreatorActivity"
            android:label="@string/title_activity_password_creator" >
        </activity>
        <activity
            android:name=".LoginActivity"
            android:label="@string/title_activity_login" >
        </activity>


    </application>

    <application android:icon="@drawable/ic_launcher"
             android:label="@string/app_name"
             android:name=".application.GlobalVars">

     </application>


</manifest>

这就是我访问它的方式:

GlobalVars tmp = ((GlobalVars) getApplicationContext());
tmp.setDefaultEncrypt(sharedPref.getBoolean("Default", true));
tmp.setPassword(sharedPref.getString("password", "0x1234"));

注意:我尝试了 this.getApplication() 和 getApplication() 但都不起作用

我做错了什么以及如何解决它。

提前致谢。

最佳答案

我不是 100% 确定,但您有 2 个应用程序节,请尝试移动/替换以下项目:

   <application android:icon="@drawable/ic_launcher"
             android:label="@string/app_name"
             android:name=".application.GlobalVars">

     </application>

进入您的原始应用程序节:

  <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:name=".application.GlobalVars" 
   >

        <activity
            android:name=".MainActivity"
            android:label="Blacksmith"
            android:theme="@android:style/Theme.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".PasswordCreatorActivity"
            android:label="@string/title_activity_password_creator" >
        </activity>
        <activity
            android:name=".LoginActivity"
            android:label="@string/title_activity_login" >
        </activity>


    </application>

关于java - 无法从 android.app.Application 转换为自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26050513/

相关文章:

java - 将一个列表插入到另一个列表的适当位置

android - 在另一个布局中扩充一个布局

Cucumber 测试包中的 java.lang.NoClassDefFoundError

java - android/java get now()-27 第二次

javascript - 添加 1 - Javascript Android Studio

Python,Oracle DB,一列中的XML数据,获取cx_Oracle.Object

PHP MySQL 生成多个 xml 站点地图索引

javascript - 对 AJAX XMLHttpRequest 感到困惑

java - 复杂的 Mongo DB 查询 - 子文档

java - JBoss5 CLIENT-CERT 身份验证获取 HTTP 状态 401 - 无法使用提供的凭据进行身份验证错误