Android:动态文本创建?

时间:2011-05-26 19:56:48

标签: java android string dynamic

假设我在Java中有一些我从Web脚本中检索到的字符串。真的没关系,它们只是存储在变量中的字符串。

现在我的问题是如何动态地将它们附加到应用程序(以显示用户)并可能从Java设置它们的位置。

为了进行类比,我想在JavaScript中执行类似以下的操作:

var text = document.createElement('div'); 
text.appendChild(document.createTextNode("some string")); 
text.style.position = "whatever";
// etc, more styling
theDiv.appendChild(text); // add this new thing of text I created to the main application for the users to see

我查看了TextView,我似乎没有正确使用它(我猜不明白构造函数?)。我现在想要尝试的是让用户在我的应用程序中按下一个按钮,然后动态生成一些文本。这是我一直在尝试的:

search_button = (Button) findViewById (R.id.backSearchButton);
        search_button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {


            String test = new String("testing!"); 

            TextView test2 = new TextView(this);    //constructor is wrong, this line gives me an error

            test2.setText(test); 

            setContentView(test2); 

        }
    });

正如您可能知道的那样,我并非来自Java背景。我只想尝试与我想要为Web应用程序做的事情相提并论。

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

尝试:

TextView test2 = new TextView(ParentActivity.this);

将“ParentActivity”替换为您的活动名称。

答案 1 :(得分:1)

您的this指针是对您匿名创建的OnClickListener的引用。你需要一个指向包含Activity的指针。

您可能最好在活动的onCreate中构建文本视图,只需从onClick方法设置文本

答案 2 :(得分:1)

我自己也是Java和Android的新手。但我会试一试你的问题。

  1. 您必须决定是要用XML创建TextView还是用Java动态创建。我认为在布局创建者中用XML创建它会更好。

  2. 我认为你不应该使用setContentView(test2)

  3. 如果您动态创建TextView,我认为您不需要在其构造函数中放置任何内容。但您必须将TextView添加到父视图。换句话说,假设你的布局中有某个LinearLayout。你必须这样做:linearLayout1.add(myTextView)或其他什么。

  4. 你的其余代码似乎很好。但话说回来,我自己还是新手。让我知道这个答案是多么有用,如果还不够,我会尝试谷歌搜索获得更多帮助。