2012-06-20 6 views
1

나는 간단한 사용자 정의보기를 작성하고 onClickListener()를 생성자에 등록했습니다. 보기 인스턴스를 클릭하면 새로운 활동을 시작하려면, 간단히 말해서 나는 이런 식으로 뭔가를 사용 : 내 지식 수준은 여전히 ​​매우 가난하기 때문에이보기 어떤에서 활동을 시작하는 좋은 방법입니다 경우android :보기에서 활동을 시작하는 안전한 방법

setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      Intent i = new Intent(getContext(), com.test.myClass.class); 
      Context context = getContext(); 
      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

      context.startActivity(i); 
     } 
    }); 

, 나는 방황했다 하나 있다면 더 좋은 방법일까요?

감사합니다.

+1

(당신의보기를 보유하고있는 활동의 onPause() 적당한 장소가 될 것 같다). –

+1

이 경우'FLAG_ACTIVITY_NEW_TASK'을 설정할 필요는 없지만, 그렇지 않으면 코드가 잘 작동합니다. – Devunwired

답변

4

이 구현은 매우 유효하지만 두 작은 것들로 개선 될 수 :

YourView extends View{ 

    private boolean clicked = false; 

    private final View.OnClickListener myOnClickListener = 
    new View.OnClickListener(){ 
    public void onClick(View v) { 
     if (!clicked){ 
      clicked = true; 
      Context context = getContext(); 
      Intent i = new Intent(context, com.test.myClass.class); 
      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

      context.startActivity(i); 
     } 
    } 
    } 


    public View(Context ctx){ 
    super(ctx); 
    setOnClickListener(myOnClickListener); 
    } 
} 

개선 다음과 같습니다 당신의보기에 미친처럼 사용자가 클릭, 그것은 OnClickListener 그 경우 일 수있는 경우 한 번 이상 삼중 된 것이므로 다중 활동을 시작합니다. 부울이 수정합니다. 또한 OnClickListener은 항상 동일하지만보기 내에서 한 번만 선언 할 수 있으며 두 번 이상 인스턴스화하지 않아도됩니다.

참고 : 당신은 어떤 시점에서 다시 false로 clicked을 설정해야 할 수 있습니다 완벽

+0

도움 주셔서 감사합니다! – newman555p

관련 문제