不幸的是,时钟已停止

时间:2014-05-23 14:36:14

标签: android

我已经注释掉了((Button)findViewById(R.id.addClockIn))。setOnClickListener(this)部分它并没有崩溃,但按钮不起作用。

public class MainActivity extends Activity implements OnClickListener {
TextView textView;

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

    if (savedInstanceState == null) {
        getFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
        ((Button) findViewById(R.id.addClockIn)).setOnClickListener(this);
    }
}

    public void addClockIn(View view) {
        StringBuilder str = new StringBuilder("It worked");
        textView.setText(str);
    }

2 个答案:

答案 0 :(得分:0)

我认为问题在于你没有正确调用你的点击监听器,onclick监听器需要被移动到savedinstancestate == null块之外。请参阅以下代码。

public class MainActivity extends Activity {
    TextView textView;

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

        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();

        }
        ((Button) findViewById(R.id.addClockIn)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                StringBuilder str = new StringBuilder("It worked");
                textView.setText(str);
            }
        });
    }
}

此外,文本视图是否连接到任何地方,以便您可以看到它在说什么?我没有看到你在任何时候将它附加到UI元素。

答案 1 :(得分:-1)

您不应该将this传递到setOnClickListener中,而应该是一种OnClickListener本身。我会在您的类声明中删除implements OnClickListener,只需将您的代码更改为:

((Button) findViewById(R.id.addClockIn)).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
             // Put whatever action you want to happen in here
             // Such as:
             StringBuilder str = new StringBuilder("It worked");
             textView.setText(str);
        }
    });

这样,您可以将点击侦听器分配给多个视图,每个视图在单击时都会实现自己的操作。但请注意,目前这可能会出错,因为您只声明了TextView而未使用findViewById()方法对其进行定义。