하나의 액티비티에 데이터를 전달할 수 있어야하는 여러 조각이 있습니다. 튜토리얼을 사용하여 콜백을 구현했습니다. 내 MainActivity는 내 조각 클래스가있는 외부 클래스입니다. 또한 조각 전이를 처리하는 FragmentPagerAdapter가 있습니다. 사실, Eclipse는 내 MainActivity 외부 클래스에 대해 Fragments 중 하나에 포함되어있는 콜백 인터페이스를 구현하지 않습니다. Android : 외부 클래스에 내부 클래스를 구현합니다. 내부 클래스와 외부 클래스의 콜백
이
내 코드의 구조 :public class MainActivity extends FragmentActivity **implements ConnectionFragment.dataCallback**{
//compiler error here:"ConnectionFragment cannot be resolved to a type"
//when i leave this out i get runtime error: "MainActivity java must
//implement dataCallback"
...
public class SectionsPagerAdapter extends FragmentPagerAdapter implements ConnectionFragment.dataCallback{
@Override
public void updateLog(View v, String line) {
DataFragment dataFrag = (DataFragment)getSupportFragmentManager().findFragmentByTag(DataFragment.class.getName());
if (dataFrag != null){
dataFrag.updateLog(v,line);
}
}
...
}
public static class ConnectionFragment extends Fragment {
...
public interface dataCallback{
public void updateLog(View v, String line);
}
dataCallback mCallback;
private static dataCallback dummyCallback=new dataCallback(){
@Override
public void updateLog(View v, String line){
}
};
@Override
public void onAttach(Activity activity){
super.onAttach(activity);
try {
mCallback = (dataCallback)activity;
} catch (ClassCastException e){
throw new ClassCastException(activity.toString() + " must implement dataCallback");
}
}
}
public static class DataFragment extends Fragment implements ConnectionFragment.dataCallback{
public void updateLog(View v,String line){
TextView logTextView=(TextView)v.findViewById(R.id.log_view);
logTextView.append("\n"+line);
}
...
}
public static class GraphFragment extends Fragment {
...
}
}
ConnectionFragment가 DataFragment로 데이터를 전송 할 수 있어야한다.
감사합니다.
감사합니다. 그것은 효과가 있었다. 하지만 불행히도 내 애플 리케이션은 여전히 한 조각에서 다른 곳으로 데이터를 전송하는 데 문제가 있습니다. 그러나 이것은 내가 추측하는 또 다른 질문이 될 것으로 예상됩니다. – timolemow