错误日志:
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(本地方法)
我试图设置一个全局变量类,但它正在崩溃。我需要知道我错过了什么?
/*全局类
public class GlobalActivity extends AppCompatActivity {
private int albumId;
public int getAlbumId() {
return albumId;
}
public void setAlbumId(int albumId) {
this.albumId = albumId;
}
}
/*宣言
<activity android:name=".DisplayActivity"></activity>
<activity android:name=".GlobalActivity"></activity>
/*活性主体
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
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
<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
<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>
发布于 2016-08-07 20:09:38
这句话:
final GlobalActivity globalAlbum = (GlobalActivity) getApplicationContext();
之所以出错,主要是因为不能将应用程序上下文转换为特定的activity
类。如果您真的想要一个全局类,那么在使用它之前,必须确保它的一个实例是存在的。
其中一个选项是创建一个带有静态字段的普通Java类。一旦应用程序初始化,它们就可以使用了,但是,您必须小心,不要保存任何可能包含context
变量的东西,因为这将要求内存泄漏。
第二种方法是使用application
类。@hatib在我打字的时候已经发出去了:D.我以后也会说同样的话。
https://stackoverflow.com/questions/38817969
复制相似问题