我如何访问随机 string.xml
How do i access a random string.xml
一个简单的报价生成器有问题,我已经对代码进行了概念化,并假设如果我将字符串保留在 xml
中它会起作用
<resources>
<string name="app_name">"Lift Quote"</string>
<string name="action_settings">Settings</string>
<!-- put buttons in here -->
<!-- here are the quotes -->
<!-- inspiring -->
<string name="s1">"He who has a why to live can bear almost any how." -Nietzche</string>
<string name="s2">"Life is about making an impact, not making an income." –Kevin Kruse</string>
<string name="s3">You miss 100% of the shots you don’t take. –Wayne Gretzky</string>
<!-- deep -->
<string name="s4">" A man's character is his fate. " -Heraclitus</string>
<string name="s5">"Why do you stay in prison when the door is so wide open?" -Rumi</string>
<string name="s6">"When I let go of what I am, I become what I might be." -Lao Tzu</string>
<!-- positive -->
<string name="s8">"Happiness is not something ready made. It comes from your own actions." -Dalai Lama</string>
<string name="s9">"If you have a positive attitude and constantly strive to give your best effort,
eventually you will overcome your immediate problems and find you are ready for greater challenges." -Pat Riley
</string>
</resources>
并在主目录中访问它们。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// WHERE MY CODE STARTS
//RANDOM GENERATOR that DOESN'T WORK
Random rand = new Random();
final int irandomIndex = rand.nextInt((3 - 1) + 1)+1;
final int drandomIndex = rand.nextInt((4 - 6) + 1)+4;
final int prandomIndex = rand.nextInt((7 - 9) + 1)+7;
final String iIndex = "s"+irandomIndex;
final String dIndex = "s"+drandomIndex;
final String pIndex = "s"+prandomIndex;
//STRING
final TextView txt = (TextView) findViewById(R.id.textView);
//BUTTONS
//
Button inspireBtn = (Button) findViewById(R.id.iButton);
Button deepBtn = (Button) findViewById(R.id.dButton);
Button positiveBtn = (Button) findViewById(R.id.pButton);
// ON CLICK LISTENRS
inspireBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
String index = iIndex;
txt.setText(getResources().getString(R.string.index));
//"cannot resolve symbol 'index';"
}
});
//this wouldn't work either
final String ss1 = "s1";
final String x = getResources().getString(R.string.ss1);
deepBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
txt.setText(x);
}
});
//this wouldn't work either same error
final String sx2 = "s1";
final String m = getResources().getString(R.string.sx2);
positiveBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
txt.setText(m);
}
});
}
我想我的问题更多:如何通过字符串变量访问 String.xml 值。我发现这在将来可能会有用。
现在我选择不在单独的 class 中通过数组执行此操作。
使用getResources().getIdentifier("s1", "string", Activity.this.getPackageName())
获取资源id。然后调用 txt.setText(id)
在 strings.xml 中的 string-array
中定义引号,如下所示
<string-array name="mystrings">
<item>value 1</item>
<item>value 2</item>
<item>value 3</item>
</string-array>
然后,在您的 activity/fragment/whatelse
中访问此资源
String[] array = getResources().getStringArray(R.array.mystrings);
试试这个:
假设您想要这个字符串名称:
final String ss1 = "s1";
您可以获取具有该名称的字符串(动态作为字符串),如下所示:
final String x = getString(getApplicationContext().getResources().getIdentifier(ss1, "string", getPackageName()));
一个简单的报价生成器有问题,我已经对代码进行了概念化,并假设如果我将字符串保留在 xml
中它会起作用<resources>
<string name="app_name">"Lift Quote"</string>
<string name="action_settings">Settings</string>
<!-- put buttons in here -->
<!-- here are the quotes -->
<!-- inspiring -->
<string name="s1">"He who has a why to live can bear almost any how." -Nietzche</string>
<string name="s2">"Life is about making an impact, not making an income." –Kevin Kruse</string>
<string name="s3">You miss 100% of the shots you don’t take. –Wayne Gretzky</string>
<!-- deep -->
<string name="s4">" A man's character is his fate. " -Heraclitus</string>
<string name="s5">"Why do you stay in prison when the door is so wide open?" -Rumi</string>
<string name="s6">"When I let go of what I am, I become what I might be." -Lao Tzu</string>
<!-- positive -->
<string name="s8">"Happiness is not something ready made. It comes from your own actions." -Dalai Lama</string>
<string name="s9">"If you have a positive attitude and constantly strive to give your best effort,
eventually you will overcome your immediate problems and find you are ready for greater challenges." -Pat Riley
</string>
</resources>
并在主目录中访问它们。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// WHERE MY CODE STARTS
//RANDOM GENERATOR that DOESN'T WORK
Random rand = new Random();
final int irandomIndex = rand.nextInt((3 - 1) + 1)+1;
final int drandomIndex = rand.nextInt((4 - 6) + 1)+4;
final int prandomIndex = rand.nextInt((7 - 9) + 1)+7;
final String iIndex = "s"+irandomIndex;
final String dIndex = "s"+drandomIndex;
final String pIndex = "s"+prandomIndex;
//STRING
final TextView txt = (TextView) findViewById(R.id.textView);
//BUTTONS
//
Button inspireBtn = (Button) findViewById(R.id.iButton);
Button deepBtn = (Button) findViewById(R.id.dButton);
Button positiveBtn = (Button) findViewById(R.id.pButton);
// ON CLICK LISTENRS
inspireBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
String index = iIndex;
txt.setText(getResources().getString(R.string.index));
//"cannot resolve symbol 'index';"
}
});
//this wouldn't work either
final String ss1 = "s1";
final String x = getResources().getString(R.string.ss1);
deepBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
txt.setText(x);
}
});
//this wouldn't work either same error
final String sx2 = "s1";
final String m = getResources().getString(R.string.sx2);
positiveBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
txt.setText(m);
}
});
}
我想我的问题更多:如何通过字符串变量访问 String.xml 值。我发现这在将来可能会有用。 现在我选择不在单独的 class 中通过数组执行此操作。
使用getResources().getIdentifier("s1", "string", Activity.this.getPackageName())
获取资源id。然后调用 txt.setText(id)
在 strings.xml 中的 string-array
中定义引号,如下所示
<string-array name="mystrings">
<item>value 1</item>
<item>value 2</item>
<item>value 3</item>
</string-array>
然后,在您的 activity/fragment/whatelse
中访问此资源String[] array = getResources().getStringArray(R.array.mystrings);
试试这个:
假设您想要这个字符串名称:
final String ss1 = "s1";
您可以获取具有该名称的字符串(动态作为字符串),如下所示:
final String x = getString(getApplicationContext().getResources().getIdentifier(ss1, "string", getPackageName()));