我的好友和我正在Android Studio中编写一个简单的应用程序。按下按钮时,将打开一个新活动,其中包含您按下的按钮的名称,并显示该文件中的文本。
我有生成第一组按钮的代码(这些是硬编码的),我可以得到按下按钮的名称。我的麻烦是阅读文本文件并显示内容。文本文件中的每一行都是一个需要作为按钮文本值的单词。我不能硬编码这些词,因为它们可以经常改变。
实施例; 在主活动上按下标有“Round”的按钮,它会将您发送到一个页面,该页面将文本文件中名为“round”的所有单词列为按钮。
我希望这更清楚。
提前致谢。
答案 0 :(得分:0)
您应该采取以下步骤:
当用户点击某个按钮时,创建一个指向第二个活动的Intent
,并将按钮名称作为附加内容附加。
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("nameOfButton", /* name of button */);
startActivity(inetnt);
在第二个活动中,通过Intent
方法获取对该getIntent()
的引用,并将其额外读取为该按钮的名称。
Intent intent = getIntent();
String nameOfButton = intent.getStringExtra("nameOfButton");
阅读相应的文本文件并相应地为布局文件充气。
答案 1 :(得分:0)
假设您的文件位于SD卡中并且您将其命名为与按钮相同的名称,这应该可以正常工作。
另外,在你的第一个活动中,你可以创建一个公共变量(或者是我喜欢的Frogatto提到的额外内容。他们真的听起来比我更好),它存储了点击按钮的名称,然后添加它+" .txt"。
Ps:我花时间去做这件事只是因为我的好奇心c:
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);
}
}
的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>