不应继承的扩展类调用函数

时间:2014-12-21 00:58:39

标签: android inheritance handler

我有以下问题: 我做了一个简单的Android应用程序,使用处理程序每​​1000毫秒将一个整数加1,然后显示这个整数。 问题是,当我开始另一个活动时,同样的事情会发生,如果这是有意的话,这将是好的。在新活动中没有调用所提到的函数,但它似乎是。请查看我的代码并告诉我它出错的地方..

MainActivity:

public class MainActivity extends ActionBarActivity {

protected TextView text;
protected int position;
private Handler handler = new Handler();
private int i = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    text = (TextView) findViewById(R.id.text);
    position=0;
    SetButtonCLickListener();
    counter();
}

protected void SetButtonCLickListener() {
    Button btn = (Button) findViewById(R.id.button);
    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SwitchActivity();
        }
    });
}

private void counter() {
    handler.removeCallbacks(count);
    handler.postDelayed(count, 1000);
}

private Runnable count = new Runnable() {
    public void run() {
        i++;
        text.setText("Count: " + i);
        handler.postDelayed(count, 1000);

    }
};

protected void SwitchActivity() {
    if (position == 1) {
            finish();

    } else {
        Intent intent = new Intent(this, MainActivity2.class);
        startActivity(intent);
    }


}
}

SecondActivity

public class MainActivity2 extends MainActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_activity2);
    text = (TextView) findViewById(R.id.text);
    SetButtonCLickListener();
    position=1;
}
}

1 个答案:

答案 0 :(得分:0)

MainActivity2onCreate()方法。在onCreate()方法中,您调用super.onCreate(),这会触发MainActivity onCreate()的{​​{1}}实施。 MainActivity onCreate()的实施是您通过调用counter()方法启动计数器的地方。因此,当MainActivity2启动时,其onCreate()会调用MainActivity的{​​{1}},其中会调用onCreate()

我的猜测是counter()应该从MainActivity2继承,而不是从Activity继承。