我正在尝试实现一个按钮监听器,并且如果我在 onStart 方法中这样做,就能够实现。当我在 onCreate 中进行初始化时(我读到这是一个很好的做法),我收到错误“无法更新 TargetChangeListener”并且应用程序崩溃。主要 Activity 如下:
public class EventExampleActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event_example);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
initListeners();
}
protected void onStart() {
super.onStart();
}
private void initListeners() {
Button myButton = (Button) findViewById(R.id.button1);
myButton.setOnClickListener(
new Button.OnClickListener() {
@Override
public void onClick(View v) {
TextView myTextView = (TextView) findViewById(R.id.textView1);
myTextView.setText("Button Pressed!");
}
});
}
...
...
}
如果有帮助,我正在遵循本教程:http://www.techotopia.com/index.php/An_Overview_and_Example_of_Android_Event_Handling
感谢您的见解!
最佳答案
我假设 mybutton
位于您的 Fragment
中,而不是您的 Activity
中。
如果是这种情况,当您调用 initListeners()
时,myButton
可能为 null
,因为 View 不一定已创建然而。
当您调用 beginTransaction()...commit() 时,不保证 fragment 可用,因此这可能解释了为什么您不能立即设置监听器。不过,当您到达 onStart()
时,您的 Fragment
已经创建,并且您的按钮不为空。
在 onCreateView() 中展开 View 后,继续在
方法,或者 onStart()
中使用监听器,或者在 Fragment
中设置它Fragment Lifecycle
中的任何位置(onActivitycreated()
可能是最好的地方)。
关于android - 向 onStart 与 onCreate 添加监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25497308/