我想使用txt文件中的单词设置按钮的文本

时间:2016-01-16 17:44:34

标签: java android

我的好友和我正在Android Studio中编写一个简单的应用程序。按下按钮时,将打开一个新活动,其中包含您按下的按钮的名称,并显示该文件中的文本。

我有生成第一组按钮的代码(这些是硬编码的),我可以得到按下按钮的名称。我的麻烦是阅读文本文件并显示内容。文本文件中的每一行都是一个需要作为按钮文本值的单词。我不能硬编码这些词,因为它们可以经常改变。

实施例; 在主活动上按下标有“Round”的按钮,它会将您发送到一个页面,该页面将文本文件中名为“round”的所有单词列为按钮。

我希望这更清楚。

提前致谢。

2 个答案:

答案 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>

enter image description here

enter image description here