저는 며칠 동안 해결책을 찾고 있었지만 아직도 저를 긁어 모았습니다. 나는 세 조각을 발사하는 활동을하고 있는데, 각 조각은 원격 조종의 한 부분이다. 따라서 각 조각에는 많은 버튼이 있습니다. 내가해야 할 일은 어떤 버튼이 활동으로 밀렸는지에 대한 정보를 얻을 수 있도록함으로써 정보로 무엇인가를 할 수 있도록하는 것입니다. 리스너/인터페이스 메소드가 올바른 방법이라는 것을 알았지 만, 필자가 찾은 모든 예제는 리스너를 한 번만 설정해야하는 Listview를 사용합니다. 리모컨의 각 버튼마다 여러 개의 onClick 리스너가 있습니다. 여기조각에서 주요 활동으로 돌아 가기
은의 fragment가 선언하는 방법입니다
public class RemoteFragment extends Fragment implements View.OnClickListener {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = null;
String message = getArguments().getString(EXTRA_MESSAGE);
if (message.equals("main")) {
v = createViewMain(inflater, container, savedInstanceState);
}
else if (message.equals("control")) {
v = createViewControl(inflater, container, savedInstanceState);
}
else if (message.equals("numeric")) {
v = createViewNumeric(inflater, container, savedInstanceState);
}
return v;
}
private View createViewMain (LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.remote_main, container, false);
Button roomOffButton = (Button) v.findViewById(R.id.room_off);
roomOffButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
OnButtonPushed(v);
Toast.makeText(getActivity().getApplicationContext(), "Room Off pressed", Toast.LENGTH_SHORT).show();
}
});
//....
}
@Override
public void onClickListener(View view) {
Toast.makeText(getActivity().getApplicationContext(), "Clicked ", Toast.LENGTH_LONG).show();
try{
((OnButtonPushedListener) activity).onButtonPushed(view);
}catch (ClassCastException cce){
}
}
public interface OnButtonPushedListener{
public void onButtonPushed(View view);
}
나는 (내가하고 있다고 생각하는) 슈퍼 방법을 재정의하거나 구현해야 말해 OnClickListener를의 선언에 오류가 발생합니다. 리스너에서 onButtonPushed를 호출하려고하면 onButtonPushed (view)가 View.OnClickListener 유형에 대해 정의되지 않았 음을 알립니다. (내가 오버로드했을 때 생각한). 주요 활동
돌아 가기는, 나는 그것을
public class RemoteActivity extends FragmentActivity implements RemoteFragment.OnButtonPushedListener {
을 선언 한 등으로 인터페이스를 구현 한 :이다
@Override
public void OnButtonPushed(View view) {
Toast.makeText(this, "in the interface ", Toast.LENGTH_LONG).show();
}
중 하나를하지 않습니다. 나는 내가 뭔가 간단한 것을 놓치고있을 것임에 틀림 없다라고 확신한다. .. 나는 있냐?
:
@Override
public void onClick(View v) {
}
** 정확한 ** 컴파일러 오류를 복사하여 붙여 넣으십시오. 의역문은 종종 우리가 당신을 도울 필요가있는 중요한 정보를 잃어 버립니다. –