首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我试图设置一个全局变量类,但它正在崩溃。我遗漏了什么吗?

我试图设置一个全局变量类,但它正在崩溃。我遗漏了什么吗?
EN

Stack Overflow用户
提问于 2016-08-07 19:56:28
回答 3查看 753关注 0票数 1

错误日志:

ComponentInfo{com.example.sellingbcom.myapplicationa/com.example.sellingbcom.myapplicationa.DisplayActivity}::无法启动活动java.lang.RuntimeException com.example.sellingbcom.myapplicationa.GlobalActivity : android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)不能将android.app.Application转换为android.app.Application在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) at android.app.ActivityThread.access$700(ActivityThread.java:143)在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241) at android.os.Handler.dispatchMessage(Handler.java:99)在android.os.Looper.loop(Looper.java:137) 在android.app.ActivityThread.main(ActivityThread.java:4950) at java.lang.reflect.Method.invokeNative(原生方法)在java.lang.reflect.Method.invoke(Method.java:511) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)在dalvik.system.NativeStart.main(本地方法) 原因: java.lang.ClassCastException: android.app.Application 无法在com.example.sellingbcom.myapplicationa.GlobalActivity上转换为com.example.sellingbcom.myapplicationa.DisplayActivity.onCreate(DisplayActivity.java:17)在android.app.Activity.performCreate(Activity.java:5177) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 在android.app.ActivityThread.access$700(ActivityThread.java:143)公司 Android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)在android.os.Handler.dispatchMessage(Handler.java:99)生产中的应用在android.app.ActivityThread.main(ActivityThread.java:4950)的android.os.Looper.loop(Looper.java:137)在java.lang.reflect.Method.invoke(Method.java:511)的java.lang.reflect.Method.invokeNative(本地方法)

我试图设置一个全局变量类,但它正在崩溃。我需要知道我错过了什么?

/*全局类

代码语言:javascript
运行
复制
 public  class  GlobalActivity extends AppCompatActivity {

private int albumId;

    public int getAlbumId() {
        return albumId;
    }

    public void setAlbumId(int albumId) {
        this.albumId = albumId;
    }

  }

/*宣言

代码语言:javascript
运行
复制
   <activity android:name=".DisplayActivity"></activity> 
<activity  android:name=".GlobalActivity"></activity>

/*活性主体

代码语言:javascript
运行
复制
public class MainActivity extends AppCompatActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    int x=10;
    final GlobalActivity globalAlbum = (GlobalActivity) getApplicationContext();
    globalAlbum.setAlbumId(x);
 }

 public void dispAct(View view) {
    Intent i = new Intent(this, DisplayActivity.class);
    startActivity(i);

 }
}

/* DisplayActivity

代码语言:javascript
运行
复制
public class DisplayActivity extends AppCompatActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.display);

    final GlobalActivity globalAlbum = (GlobalActivity) getApplicationContext();
    int x = globalAlbum.getAlbumId();

    TextView songLyric = (TextView) findViewById(R.id.disp);
    songLyric.setText(x);
 }
}

/*活动XML

代码语言:javascript
运行
复制
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.sellingbcom.myapplicationa.MainActivity">



        <Button
            android:id="@+id/tgl_status"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:focusable="false"
            android:clickable="false"
            android:onClick="dispAct"
            android:text="PICK"

            />
    </LinearLayout>

/*显示XML

代码语言:javascript
运行
复制
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/disp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="" />
    </LinearLayout>
EN

Stack Overflow用户

发布于 2016-08-07 20:09:38

这句话:

代码语言:javascript
运行
复制
final GlobalActivity globalAlbum = (GlobalActivity) getApplicationContext();

之所以出错,主要是因为不能将应用程序上下文转换为特定的activity类。如果您真的想要一个全局类,那么在使用它之前,必须确保它的一个实例是存在的。

其中一个选项是创建一个带有静态字段的普通Java类。一旦应用程序初始化,它们就可以使用了,但是,您必须小心,不要保存任何可能包含context变量的东西,因为这将要求内存泄漏。

第二种方法是使用application类。@hatib在我打字的时候已经发出去了:D.我以后也会说同样的话。

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38817969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档