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());
}
}
}
我正在尝试从资源中获取字符串 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());
}
}
}