【问题标题】:How do i set the text of a TextView in a FrameLayout?如何在 FrameLayout 中设置 TextView 的文本?
【发布时间】:2015-02-26 06:46:05
【问题描述】:

我有一个游戏,每次球员将球传过球门时都会增加一分。我添加了一个 TextView,我想在每次目标时更新它,并用文本“1”初始化它,并给它 id “scoreTextView”。我试图在我的主要活动中声明一个 TextView 变量并使用 addView 但我的游戏每次都会崩溃。我还尝试在阅读另一个 StackOverflow 问题后将布局参数与要显示的 TextView 一起传递,但这也导致我的游戏崩溃。当我没有声明 TextView 变量并且没有在我的主要活动中将 scoreTextView 添加到 mainView (这是我的 FrameLayout 变量的名称)时,游戏实际上会运行并显示 1 但如果我无法从我的活动中访问 scoreTextView 我没有办法改变它。 所以我的问题是如何在 FrameLayout 中创建一个 TextView,我实际上可以在我的主要活动中根据需要动态使用和更改?

我已经看过这个并尝试过,但没有奏效: Add a Textview to a FrameLayout in a determined position

【问题讨论】:

  • 在此处显示您的代码,当用户完成目标时触发
  • @RandykaYudhistira 好吧,我还没有添加,但我只是想要一种简单的方法来更改 TextView,这样我就可以在代码中实现它,以便在用户完成目标时更改 TextView。由于我无法在活动中使用它(没有应用程序崩溃)我不能让它动态改变......所以我只想要一个在 FrameLayout 中更改 TextView 的简单示例,以便我可以动态实现它。谢谢!!
  • 向我们展示您的日志信息?

标签: java android


【解决方案1】:

也许您的问题是您尝试从非 UI 线程更新 TextView?日志消息真的很有帮助...

如果是这种情况,请尝试添加以下内容:

runOnUiThread(new Runnable() {
    public void run() {
        // Update TextView here
TextView scoreTextView = (TextView)findViewById(R.id.scoreTextView);
scoreTextView.setText("Goals scored: " + goals);
    }
});

【讨论】:

  • 很高兴帮助你:) 下次也给出错误日志:)
  • 好的,我实际上只是再次检查了我的代码,真正的问题是我在 OnCreate 之外声明了我的 TextView 变量......我只是习惯了使用 ButterKnife,我忘记了我没有使用它这个程序。不过还是谢谢你,下次我会确保提供错误日志。
  • @Benyam Ephrem 我也遇到了同样的问题,我也在外面声明了 TextView :D
【解决方案2】:
<FrameLayout
    android:id="@+id/yourFrameLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@+id/lin2"
    android:layout_below="@+id/lin1"
    android:orientation="vertical" >        

    <TextView
        android:id="@+id/messageTextView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:gravity="center"
        android:textSize="20sp"
        android:text="Put your message over here" />
</FrameLayout>

然后您可以根据需要显示或隐藏此 messageTextView,这是一种非常简单的访问方式。希望对你有帮助

【讨论】:

  • 感谢您的回复,但我将如何从主活动访问 TextView,这是我的麻烦,当我尝试声明 TextView 变量然后将其添加到 FrameLayout 时,我的应用程序崩溃。那么我将如何在主要活动中使用它,以便我可以在我的代码中动态更改它?
  • messageTextView = (TextView) findViewById(R.id.messageTextView);你必须在你的活动中添加这么多,然后 messageTextView.setText(" set Text any you want to write ")
【解决方案3】:
TextView textView = (TextView) findViewById(R.id.messageTextView);
textView.setText("this is where you add what you want the text to say");

这应该在附加到布局的活动类中完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多