Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.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_Global Variables - Fatal编程技术网

Java 安卓全局变量

Java 安卓全局变量,java,android,global-variables,Java,Android,Global Variables,我知道以前有人问过这个问题(我在这里读过很多关于他们的帖子),但我不知道我做错了什么。我想将一些东西设置为全局变量,以便在整个应用程序中使用。因此,我创建了一个新文件夹(我认为它创建了一个新应用?),其中包含一个类: 这很好。在Global.java中,我有以下内容: package com.directenquiries.assessment.tool.Globals; import android.app.Application; import android.os.Environmen

我知道以前有人问过这个问题(我在这里读过很多关于他们的帖子),但我不知道我做错了什么。我想将一些东西设置为全局变量,以便在整个应用程序中使用。因此,我创建了一个新文件夹(我认为它创建了一个新应用?),其中包含一个类:

这很好。在Global.java中,我有以下内容:

package com.directenquiries.assessment.tool.Globals;

import android.app.Application;
import android.os.Environment;

public class Global extends Application {
      public String foo;
      public String SDcard = Environment.getExternalStorageDirectory().getAbsolutePath();


    }
我的清单文件现在看起来像:(我认为这可能是罪魁祸首?)

但我的应用程序出现了以下问题:

09-11 14:14:19.354: W/dalvikvm(5339): threadid=1: thread exiting with uncaught exception (group=0x40c4f1f8)
09-11 14:14:19.359: E/AndroidRuntime(5339): FATAL EXCEPTION: main
09-11 14:14:19.359: E/AndroidRuntime(5339): java.lang.ClassCastException: android.app.Application cannot be cast to com.directenquiries.assessment.tool.Globals.Global

如需任何帮助,请访问manifest.xml下方的用户

  • 不要声明两个应用程序标记
  • 您的应用程序类位于子包中,所以您需要像下面这样添加相对包路径
  • android:name=“.Globals.Global”

    
    

    公共字符串foo
    修改为
    公共最终静态字符串foo
    ,然后您可以将其称为
    全局.foo

    您不需要将全局类放在另一个包中。

    您使用的是上限类型。应用程序没有Global的方法,您介意详细说明吗?我不明白,非常感谢你这么做,以及背后的详细理由。非常感谢。当我能+1时,将标记为答案这不是最干净的方式,但它有效。如果字段是常量,请确保字段为最终字段。是的,谢谢您的最终添加,我将修改帖子。你是对的
    String SDLoc = ((Global) this.getApplication()).foo;
    
            TextView obs = (TextView) findViewById(R.id.textView1);
            obs.setText(SDLoc);
    
    09-11 14:14:19.354: W/dalvikvm(5339): threadid=1: thread exiting with uncaught exception (group=0x40c4f1f8)
    09-11 14:14:19.359: E/AndroidRuntime(5339): FATAL EXCEPTION: main
    09-11 14:14:19.359: E/AndroidRuntime(5339): java.lang.ClassCastException: android.app.Application cannot be cast to com.directenquiries.assessment.tool.Globals.Global
    
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />
    
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:name=".Globals.Global">
        <activity
            android:name=".LoginPageActivity"
            android:label="@string/title_activity_login_page" >
    
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    
    </application>