【问题标题】:How do I start same Activity with different text when click two different buttons?单击两个不同的按钮时,如何使用不同的文本启动相同的 Activity?
【发布时间】:2017-11-28 16:13:58
【问题描述】:

我正在构建一个应用程序。当我单击一个按钮时,它将启动一个带有文本“Hello world”的活动(例如.activity_sub),当单击另一个按钮时,它将启动相同的活动但不同的文本视图“hi伙伴”。 我还没有按下按钮,因为我不知道如何继续。 我正在使用安卓工作室。

这是我从资产中获取 txtfile 的 java 代码。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    try {
        InputStream is = this.getAssets().open("assetstext.txt");
        int size = is.available();
        // Read the entire asset into a local byte buffer.
        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();
        // Convert the buffer into a string.
        String text = new String(buffer);
        // Finally stick the string into the text view.
        TextView tv = (TextView)findViewById(R.id.assetstext);
        tv.setText(text);
    } catch (IOException e) {
        // Should never happen!
        throw new RuntimeException(e);
    }
}

【问题讨论】:

  • 根据上面的代码,我知道按钮上的文本将从外部文件中读取?或者,文本描述了您要完成的任务,但您不确定如何完成?
  • 为什么要重新开始相同的活动?单击按钮时更改文本视图文本不是更容易吗?。
  • 是的,如果我不开始相同的活动,那么我必须创建很多活动。因为我想构建歌词应用程序。谢谢

标签: android android-activity textview assets android-studio-3.0


【解决方案1】:

您必须在调用第二个活动时设置所需的文本,作为调用意图中的额外内容。

Intent starterIntent = new Intent(FirstActivity.class.this,SecondActivity.class)
starterIntent.putExtra("text_key", "<your text>");

"text_key" 是查找键,可让您在下一个活动中检索文本。当然,每个按钮都应该为 设置不同的值。

然后在第二个活动中,您可以像这样检索文本:

String text = getIntent().getStringExtra("text_key");

请注意,我使用的键与您在第一个活动中使用的键 (text_key) 完全相同,否则您将找不到文本。

最后设置文字。

【讨论】:

  • 没有问题!如果它有效,你介意接受答案吗?
【解决方案2】:

在启动 Activity 时将文本作为 putextra 传递,然后在 Activity getString 的 onCreate 中传递,并根据您的过滤显示到文本视图。

【讨论】:

    【解决方案3】:

    不清楚你想要实现什么,你想要两个 textview 还是相同的 textview 和两个不同的文本?

    尽管如此,我将回答这两个条件。

    如果你想拥有多个文本视图,那么使用 setVisibilty 方法来查看或隐藏另一个文本视图:

    // here btn is your button and txtview1 and txtview2 are your textviews 
    // objects respectively.
     btn.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v){
                 txtView1.setVisibility(View.Gone);
                 txtView2.setText("hi buddy!");
             }
      });
    

    或者你可以简单地覆盖文本视图中的字符串,这要简单得多。就像你对之前的 textview 所做的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-27
      相关资源
      最近更新 更多