我已经注释掉了((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);
}
答案 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()
方法对其进行定义。