java - 安卓 Java : Buttons and TextViews not showing up when added via Java (to existing XML layout)

标签 java android xml android-layout

好吧,我要抓狂了。

我的主要 Activity 有一个简单的默认相对布局 XML,并在 XML 中定义了 LinearLayout。在我的 Java 代码中,我添加了一个 LinearLayout 行,方向水平,并将其添加到 XML Linearlayout(我通过 ID 找到的)。然后,当我将按钮或 TextView 添加到该图层行时,它们完美地显示了。

但是,当我尝试在另一个 Activity 中执行相同的操作时,我根本无法显示 TextView 或 Button。我最初有一个背景图像,并尝试将我的 Buttons 和 TextView 直接添加到根relativelayout (foundById),并计划通过 .setX 和 .setY 移动它们,但我拿走了背景并恢复为引用特定的 Linearlayout,比如我的主要 Activity (出于测试目的,以消除任何异常),但它仍然不会显示它们。我已经重新安排并永远测试了,但看不到我错过了什么。

这是我当前的 XML(为了测试而进行了精简):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_open_template"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.mystuff.stupidapp.OpenTemplateActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:id="@+id/openTemplateMain">
    </LinearLayout>

</RelativeLayout>

...这是当前的代码(也被精简):

public class OpenTemplateActivity extends AppCompatActivity {

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

        final Resources res = getResources();
        Intent intent = getIntent();
        String fileName = intent.getStringExtra(MainActivity.EXTRA_FILENAME);

        DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        int screenHeight = displaymetrics.heightPixels;
        int screenWidth = displaymetrics.widthPixels;

        LinearLayout.LayoutParams rowLayoutParams = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.MATCH_PARENT, 1.0f);

        LinearLayout llMain = new LinearLayout(this);
        llMain.setOrientation(LinearLayout.HORIZONTAL);
        LinearLayout llMainParent = (LinearLayout) findViewById(R.id.openTemplateMain);
        llMainParent.addView(llMain);

        Button bTest = new Button(this);
        bTest.setText("TESTB");
        llMain.addView(bTest);


        //other code below unrelated.
    }
}

有什么想法吗?请问?

最佳答案

为有类似问题的人回答我自己的问题: 结果 APK 被卡住了,但只是代码被卡住了。这意味着当我点击“播放”或“调试”时,对 XML 模板的任何更改(添加/删除文本或按钮或背景)都会反射(reflect)在测试设备上。但对代码的任何更改都不会反射(reflect)出来。当我更改调试日志记录中的标签时,我注意到了这一点,并且它们没有反射(reflect)在日志中。我还注意到一个类似于 Toast 的弹出窗口显示了有关该应用程序被手动关闭并通过 IDE 重新运行的内容,但它没有停留足够长的时间来仔细查看。

清除缓存和数据,卸载应用程序,然后通过IDE播放重新启动,解决了问题。代码更改现在已按预期得到反射(reflect),并且代码创建的 View 也已显示。

关于java - 安卓 Java : Buttons and TextViews not showing up when added via Java (to existing XML layout),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41092785/

相关文章:

java - 在文本区域中转义 XML 标签

javascript - 自定义图表需要更多帮助

java - 将 XSLT 输出写入内存中的多个对象

ANT jar 问题。 RT。在 Java/lib 中找不到 jar

android - 如何在对话框listView中添加editText和icon?

android - 通过系统应用程序以编程方式静默安装 apk(无 root)

android - 以编程方式设置 CardView 海拔

java - 在jsp中的XAMPP中使用mercury服务器发送邮件到gmail

Java Validator 自定义消息仍包含字段名称

Java SSL 套接字无法从客户端连接