Android 如何访问 class 中的资源?

Android how can I access resources in class?

我正在尝试从资源中获取字符串 app_name,但我一直在获取 空对象引用 。我该如何解决?

package com.testandroid;

import android.app.Activity;
import android.content.Context;
import android.util.Log;
import java.util.HashMap;


public class Test extends Activity {
    public Test() {
        try {
            String hello = getString(R.string.app_name);

        } catch (Exception e) {
            Log.d("myLogs", e.getMessage());
        }
      }
}


<resources>
    <string name = "app_name">Name</string>
</resources>
string hello = getResources().getString(R.string.app_name);

永远,永远不要覆盖 activity 的构造函数,这会导致严重的问题。如果您需要在 activity 的构造时初始化某些东西,请在 onCreate 中执行,在构造函数中资源尚未准备好使用,因此此时您不能使用它们。

public class Test extends Activity { 
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_layout_here);
        String hello = getString(R.string.app_name);
        Log.d("Log", hello);

}

另外,这应该放在 values 文件夹中的 strings.xml

<resources>
    <string name = "app_name">Name</string>
</resources>

好的,最简单的方法是使用 Context。

public class Test extends Activity {
    public Test(Context context) {
        try {
            String hello = context.getResources().getString(R.string.app_name)

        } catch (Exception e) {
            Log.d("myLogs", e.getMessage());
        }
      }
}