向onStart和onCreate添加监听器



我正在尝试实现一个按钮侦听器,如果我在onStart方法中这样做,我就能实现。当我在onCreate中初始化时(我读到这是一个很好的做法),我收到错误"更新TargetChangeListener失败",应用程序崩溃。以下是主要活动:

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,因为视图还不一定已经创建。

片段不能保证在调用beginTransaction()后立即可用。。。commit(),这样就可以解释为什么不能直接设置听众。当您到达onStart()时,您的Fragment已经创建,并且您的按钮不是空的。

继续使用onStart()中的侦听器,或者在onCreateView()方法中膨胀视图后,在Fragment中设置侦听器,或在Fragment Lifecycle中的任何位置设置侦听器(onActivitycreated()可能是最好的位置)。

相关内容

  • 没有找到相关文章

最新更新