2010-08-16 50 views
2

我试图设置和全局变量,但我我的应用程序中添加以下行到我的AndroidManifest.xml全局变量类不工作

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

我使用下面的代码,以及失败后:

类: package com.mynamecompany.datahelp;

import android.app.Application; 

class MyApp extends Application { 

     private String myState; 

     public String getState(){ 
     return myState; 
     } 
     public void setState(String s){ 
     myState = s; 
     } 
    } 

用法:

MyApp appState = ((MyApp)getApplicationContext()); 
String state = appState.getState(); 
Toast.makeText(getApplicationContext(), "My Value-" + state, Toast.LENGTH_SHORT).show(); 
appState.setState("Test"); 
Toast.makeText(getApplicationContext(), "My Value-" + appState.getState(), Toast.LENGTH_SHORT).show(); 

使用代码之前初始屏幕上的程序启动并立即错误可以进一步在程序被调用,在不同的活性的影响。

任何想法?

+0

你可以发布错误日志吗? – 2010-08-16 15:49:46

+0

为什么不把它变成一个Singleton类而不是使用Android应用程序对象(我个人认为它就像垃圾一样)?看看这篇文章的底部,看看我指的是什么(附录)。 http://androidworkz.com/2010/08/13/smart-list-adapter-tutorial-singleton-oberservable-list-objects-and-how-they-can-improve-your-app/ – androidworkz 2010-08-16 16:58:34

+0

我想如果你使用Observer,你应该在你的onDestroy()中调用object.deleteObserver(this),如果它是你的应用程序中没有持久生命的Activity。我也删除onPause()中的观察者,然后在onResume()中重新添加object.addObserver(this)。 – androidworkz 2010-08-16 17:10:01

回答

3

您正尝试从上下文中投射到您的课程。您必须致电getApplication

+0

我将getApplicationContext更改为getApplication,但是一旦我启动应用程序,应用程序就会立即由于manifest.xml行而崩溃: user412317 2010-08-16 18:35:23

+0

datahelp是否在您的包部分中定义表现?您必须在清单中指定应用程序类的路径,方法与您为活动指定的方式相同 – Janusz 2010-08-17 07:12:26

1

是什么在你的清单中的包指示:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.mynamecompany"> 
    <application android:name=".datahelp.MyApp" 
     android:icon="@drawable/icon" android:label="@string/app_name"> 
... 

也许你要改变它,因为我做它上面。其余的应该可以正常工作,在我自己的项目上尝试一下。

+0

仍然是不行的,这是我必须做错的事情。我确实在启动画面上调用了一个线程,会导致问题吗? 院长 – user412317 2010-08-18 20:44:49

+0

可能。你有没有可能发布一些更多的代码。用现在提供的金额来判断和发现问题是相当困难的:) – Juri 2010-08-19 06:38:32