2014-12-21 3 views
-2

다음과 같은 문제가 있습니다. 핸들러를 사용하여 1000ms마다 정수에 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; 
} 
} 

답변

0

MainActivity2onCreate() 방법을 가지고 있습니다. onCreate() 메서드에서 super.onCreate()을 호출하면 MainActivity 구현을 onCreate()으로 트리거합니다. MainActivity 구현이 onCreate() 인 경우 counter() 메소드 호출을 통해 카운터 작업을 시작합니다. 따라서 MainActivity2이 시작될 때 onCreate()MainActivityonCreate()을 호출하며 이는 counter()입니다.

내 생각에 MainActivity2MainActivity이 아니라 Activity에서 상속해야합니다.

+0

나는이 방법이 가능할 것으로 기대했지만, 네 말이 맞다. – patrick