Java 我想使用txt文件中的文字设置按钮的文本
我和我的朋友正在Android Studio中编写一个简单的应用程序。当您按下按钮时,将打开一个新活动,其中包含您按下的按钮的名称,并显示该文件中的文本 我有生成第一组按钮的代码(这些是硬编码的),我可以得到按下的按钮的名称。我的问题是读取文本文件并显示内容。文本文件中的每一行都是一个单词,需要作为按钮的文本值。我不能硬编码这些单词,因为它们经常变化 榜样; 在主活动中,您按下标记为“Round”的按钮,它会将您发送到一个页面,该页面将名为“Round”的文本文件中的所有单词列为按钮 我希望这更清楚Java 我想使用txt文件中的文字设置按钮的文本,java,android,Java,Android,我和我的朋友正在Android Studio中编写一个简单的应用程序。当您按下按钮时,将打开一个新活动,其中包含您按下的按钮的名称,并显示该文件中的文本 我有生成第一组按钮的代码(这些是硬编码的),我可以得到按下的按钮的名称。我的问题是读取文本文件并显示内容。文本文件中的每一行都是一个单词,需要作为按钮的文本值。我不能硬编码这些单词,因为它们经常变化 榜样; 在主活动中,您按下标记为“Round”的按钮,它会将您发送到一个页面,该页面将名为“Round”的文本文件中的所有单词列为按钮 我希望这更
提前感谢。您应该采取以下步骤:
- 当用户单击一个按钮时,创建一个指向第二个活动的
,并将该按钮的名称作为其附加项附加到该按钮上Intent
Intent intent = new Intent(MainActivity.this, SecondActivity.class); intent.putExtra("nameOfButton", /* name of button */); startActivity(inetnt);
- 在第二个活动中,通过
方法获取对该getIntent()
的引用,并读取其额外的按钮名称Intent
Intent intent = getIntent(); String nameOfButton = intent.getStringExtra("nameOfButton");
- 读取相应的文本文件并相应地放大布局文件
public class test extends Activity {
LinearLayout layout;
Button btnarr [] = new Button[50];
int counter = 0,check=0;
protected void onCreate(Bundle savedInstanceState) {
counter=0;
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
layout = new LinearLayout(this);
layout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
layout.setOrientation(LinearLayout.VERTICAL);
File sdcard = Environment.getExternalStorageDirectory();
//Get the text file
File file = new File(sdcard,"yourbuttonname.txt");
//Read text from file
StringBuilder text = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
btnarr[counter] = new Button(this);
btnarr[counter].setText(text.toString());
text = new StringBuilder();
counter++;
check++;
}
br.close();
}
catch (IOException e) {
e.printStackTrace();
}
doit();
}
public void doit()
{
counter = 0;
while(counter < check)
{
LinearLayout row = new LinearLayout(this);
row.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
btnarr[counter].setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
row.addView(btnarr[counter]);
layout.addView(row);
counter++;
}
setContentView(layout);
}
}
公共类测试扩展活动{
线性布局;
按钮btnarr[]=新按钮[50];
整数计数器=0,校验=0;
创建时受保护的void(Bundle savedInstanceState){
计数器=0;
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
布局=新的线性布局(本);
layout.setLayoutParams(新的ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_父级,ViewGroup.LayoutParams.MATCH_父级));
布局。设置方向(线性布局。垂直);
文件sdcard=Environment.getExternalStorageDirectory();
//获取文本文件
File File=新文件(SD卡,“yourbuttonname.txt”);
//从文件中读取文本
StringBuilder text=新的StringBuilder();
试一试{
BufferedReader br=新的BufferedReader(新文件读取器(文件));
弦线;
而((line=br.readLine())!=null){
text.append(行);
btnarr[计数器]=新按钮(此按钮);
btnarr[counter].setText(text.toString());
text=新的StringBuilder();
计数器++;
check++;
}
br.close();
}
捕获(IOE异常){
e、 printStackTrace();
}
doit();
}
公共无效doit()
{
计数器=0;
while(计数器<检查)
{
LinearLayout行=新的LinearLayout(该行);
row.setLayoutParams(新的ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_父级,ViewGroup.LayoutParams.WRAP_内容));
btnarr[计数器].setLayoutParams(新的ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_内容,ViewGroup.LayoutParams.WRAP_内容));
row.addView(btnarr[计数器]);
布局。添加视图(行);
计数器++;
}
setContentView(布局);
}
}
test.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
按钮的数量是否可以更改?如果答案是否定的,只是名称可以更改,也许你可以这样做:不添加文本,只需创建一个包含所有按钮的数组,每次循环时,将按钮的文本设置为从缓冲读取器获取的文本,如果名称的数量更改,则按钮数量会更改。所以如果我现在有8个名字,那么我将有8个按钮,但是明天,我可能有12个名字,所以我将有12个按钮。这听起来不错。今天晚些时候我会试试的。谢谢,谢谢。还有一个问题,如何从资产文件夹而不是外部存储设备读取文件。@vbneil54您应该阅读以下答案: