public class Main extends Activity{
final private static String TAG = getString(R.string.tag_main);
..........
..........
但在修改之後卻連onCreate都進不去就掛了。
研究了好幾個小時才了解,原來getString這個function實際上是Context.getResouce().getString(),也就是說在Activity 初始化之前(super.onCreate),"基本上"是不可以調用getString來取得資源檔的字串,當然是有些取得的方法啦,參考的是這篇:
http://stackoverflow.com/questions/6261990/strange-nullpointerexception
基本上就是要先建立一個Activity extends Application作為接口,然後在Main取得資源檔前先調用這個class,大致上步驟如下:
(1)在AndroidManiifest.xml中新增一個application:
<manifest ...>
...
<application android:name="com.mypackage.MyApplication" ... >
...
</application>
...
</manifest>(2)建立對應的MyApplication.java,並且把getString寫入:
public class MyApplication extends Application
{
private static MyApplication s_instance;
public MyApplication ()
{
s_instance = this;
}
public static Context getContext()
{
return s_instance;
}
public static String getString(int resId)
{
return getContext().getString(resId);
}
}(3)從原Main中調用MyApplication.getString方法:
private final String TAG = MyApplication.getString(R.string.tag_main);看到這邊,我決定....直接把TAG hardhoding在上面了(死).....
沒有留言:
張貼留言