android - 向 onStart 与 onCreate 添加监听器

标签 android onclicklistener oncreate onstart

我正在尝试实现一个按钮监听器,并且如果我在 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/

相关文章:

android - GridView 第一次没有被点击

android - 自定义 ListView 适配器上的 OnclickListener

android - ArrayAdapter 没有默认构造函数

java - 如何读取 Android CamcorderProfile.QUALITY_HIGH 宽度/高度?

android - 将焦点限制在具有多个添加 fragment 的容器中的一个 fragment

java - Android、SQLite...主键插入为空

android - 在 Cardview 内的 TextView 上设置 OnClickListener

android - 签名验证,Android in app billing 在之前工作后失败

java - 从其他 onCreate 方法启动一项 Activity

android - OnCreate 未在 Activity 上调用