2013-10-10 2 views
0

내 모든 활동에 참여하고 싶은 메뉴를 만들고 있습니다. 이를 위해 모든 버튼 정의와 onClickListeners를 사용하여 클래스를 만듭니다.뒤로 버튼으로 버튼 기능 설정

내가 직면 한 문제는 뒤로 버튼을 실제 뒤로 버튼으로 작동하도록 정의 할 때입니다. 이 클래스를 만든 방식에 따라 finish(), onBackPressed() 등의 기능을 인식하지 못합니다. 그래서,이 방법으로 그것을 할 수있는 방법은 무엇입니까 ??

public class MenuView extends RelativeLayout { 

private final LayoutInflater inflater; 


public MenuView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    inflater.inflate(R.layout.menu_view, this, true); 

    ((ImageView)this.findViewById(R.id.backButton)).setOnClickListener(goBack); 
} 


private final OnClickListener goBack = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //HERE TO INSERT THE WAY TO DO IT 
    } 
}; 
+0

당신의 대답은 정확 합니다만, 받아 들여지는 것이 더 상세해서 더 이해하기 쉬웠습니다. – masmic

답변

1

는 문맥 멤버 변수 선언하고 다음과 같이 생성자에서 할당 :

Context context; 

public MenuView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    this.context = context; 
    inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    inflater.inflate(R.layout.menu_view, this, true); 

    ((ImageView)this.findViewById(R.id.backButton)).setOnClickListener(goBack); 
    } 

을하고 클릭 리스너에 당신은이 코드 줄을 추가 할 수 있습니다

((Activity) context).finish(); 

그것을 시도합니다. 희망이 작동합니다.

0

private final OnClickListener goBack = new OnClickListener() { 
@Override 
public void onClick(View v) { 
    //HERE TO INSERT THE WAY TO DO IT 

onBackPressed(); 
} 
}; 
+0

'onBackPressed() 메소드는 new View.onClickListener()'타입에 대해 정의되지 않았습니다. – masmic

4

는 멤버 변수로 context 속성을 추출하고 ((Activity) context).finish() 같은 리스너에서 사용하기에 충분해야 작동합니다() 단지이 메소드를 호출, onBackPressed를이보십시오.

1

현재 보이는 Activity을 완성하려면 참조가 필요합니다.

한번 시도해,

public class MenuView extends RelativeLayout { 

private final LayoutInflater inflater; 
private Activity mActivity; 

public MenuView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    mActivity = (Activity)context; 
    inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    inflater.inflate(R.layout.menu_view, this, true); 

    ((ImageView)this.findViewById(R.id.backButton)).setOnClickListener(goBack); 
} 


private final OnClickListener goBack = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    mActivity.finish(); 
    } 
}; 

는 나는 그것이 도움이 될 것입니다 희망!

+0

시도해 보았습니다. 그러나 레이아웃을 배치하기 위해 클래스를 부 풀릴 때 다음 클래스를 인스턴스화 할 수 없으며 클래스를 정의한 선을 참조합니다 – masmic