Android - 简单的程序,但仍在努力

时间:2012-02-14 16:54:35

标签: android

我曾经有一些开发Android的经验,但我在6个月后再次开始并忘记了大部分内容。我现在正在使用macbook进行开发,并且不得不重新设置Eclipse,Android SDK和AVD,我担心我搞砸了。

当我使用在我的屏幕上显示“Hello World”的默认活动启动一个新项目时,应用运行正常。然后我尝试放入两个按钮,使新TextView中的文本发生变化。但每当我包含textView部分时,我都会遇到运行时错误。当我评论它时,应用程序运行但显然没有任何反应。根据我一直在阅读的教程,这是声明/创建textView的合适位置和方法,但我无法弄清楚出了什么问题。有什么建议吗?

[编辑]我在乱搞,发现我可以将mytext设为字段而不是TextView,并且有效。所以在我的onCreate()中,我把

 mytext = (TextField)findViewById(R.id.TextView1);

但这似乎不是正确的做事方式。

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class IntroActivity extends Activity {

     TextView myText = (TextView)findViewById(R.id.textView1);
   //i've tried this with final added on to it as well (recommended by eclipse)

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

       setButtonClickListener();
    }

    private void setButtonClickListener() {
         Button button1 = (Button)findViewById(R.id.button1);
         Button button2 = (Button)findViewById(R.id.button2);

        button1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                myText.setText("Hello");
            }
        });
        button2.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            //  myText.setText("Goodbye");
            }
        });
            }



    }

1 个答案:

答案 0 :(得分:3)

此:

TextView myText = (TextView)findViewById(R.id.textView1);

应该分开。声明应该在同一个地方:

private TextView myText;

但是作业应该只在setContentView之后出现:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    myText = (TextView)findViewById(R.id.textView1);

这是在setContentView之前完成的,Dalvik不知道从哪个布局获取与id R.id.textView1匹配的视图