【问题标题】:Android: In tabbed app, textView output is not consistant with LogCatAndroid:在选项卡式应用程序中,textView 输出与 LogCat 不一致
【发布时间】:2016-04-10 15:15:04
【问题描述】:

在我的具有选项卡式活动的应用程序中,我正在向 textView 和 logcat 发送一条简单的消息(指示我正在选择哪个选项卡的消息)。

然而,textView 显示正确的字符串,而 logcat 显示不同的字符串。

重现此问题的步骤非常简单:

  1. 启动一个新的 Android Studio 项目(我的 Android Studio 版本:1.5.1)

  2. 提供任何应用程序名称(例如 MyApplication)

  3. 只选择“手机和平板电脑”

  4. 选择“选项卡式活动”

  5. 选择导航样式“操作栏选项卡(带有视图分页器)”

  6. 点击完成

这将生成并构建项目。如果我们运行这个应用程序,它将在第一个选项卡上显示字符串“Hello World from section: 1”,在第二个选项卡上显示“Hello World from section: 2”,在第三个选项卡上显示“Hello World from section: 3”。

现在,进入MainActivity.java 和方法onCreateViewclass PlaceholderFragment)就在这一行下方(它将字符串发送到 textView),

textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER)));

添加这一行

Log.i("onCreateView", "From tab number: " + getArguments().getInt(ARG_SECTION_NUMBER));

预期行为:

textView 和 logcat 都应该在我们点击标签时显示相同的消息。

实际行为:

textView 显示正确的字符串。但是在 logcat 中,显示的选项卡编号不正确,因此与 textView 输出不一致。

这确实很奇怪,最重要的是,当我尝试自己形成字符串并将其传递给 textView 和 LogCat 时,而不是这个

        String strMessage = "Msg from tab number: " + getArguments().getInt(ARG_SECTION_NUMBER);
        textView.setText (strMessage);
        Log.i("onCreateView", strMessage);

它仍然具有相同的行为,即在 textView 中为相关选项卡显示正确的字符串,但 Logcat 显示完全不同的选项卡编号。我发送的字符串相同,但只有数字变化???

【问题讨论】:

    标签: java android android-studio


    【解决方案1】:

    我自己找到了这个问题的根本原因。看起来 textView.setTextonCreateView 中调用设置了文本值,之后它永远不会改变。我想找出当前处于活动状态或可见的选项卡,以便我可以更新其内容。我的错误印象是,当标签可见时会调用onCreateView。最后我找到了this的答案,解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 2020-10-15
      • 1970-01-01
      相关资源
      最近更新 更多