통신

2013-05-31 9 views
0

I가 Activity 연장되지 않는 클래스 (할 수없는 것이 CursorAdapter 연장 때문에)는 버튼이 각리스트 아이템에서보다 구체적으로 채우는 단편을 다시 통신 할 CursorAdapter 요구를 할 때마다 그 버튼은 내가 목록을 새로 고치려면 내가 getFragmentManager()를 호출 할 필요가이 작업을 수행 할 필요가 클릭.통신

내 문제 : CursorAdapter을 확장하고 있기 때문에이 getFragmentManager()가 호출 할 수 없습니다 내가 시도 무엇

(이 조각 또는 활동에서 호출해야합니다.). 생각 우선 할 (그리고 바로 수 있습니다 난 그냥 때문에 자바 기술의 나의 부족에 구현 것이지) 커서 어댑터에 대한 내 조각과 인터페이스 할 활동을 확장하는 클래스를 만드는 것입니다. CODE :

public class FragManager extends Activity { 

    public FragManager() { 
    } 

    public void refreshList() { 

     QCListFragment fragmentB = (QCListFragment) getFragmentManager().findFragmentById(R.id.listFragment); 
     fragmentB.requeryList(); 
    } 


} 

이처럼 내 커서 어댑터 내에서 호출되었다. CODE : 어쨌든

FragManager fragment = new FragManager(); 
      fragment.refreshList(); 

, 나는이 생각의 오른쪽 라인이라고 생각하지만, 어떤 도움이 될 것

(나는 그것을 검색하는 데 사용하는 어떤 단어를 몰랐다 어쩌면 때문에) 자습서를 찾을 수 없습니다 훌륭한! 마렉

답변

1

내가 지금 당신의 코드 구조를 잘 모르겠지만, 수업 중 하나가 중첩 된 경우, 당신은과 같이 포함하는 클래스를 액세스 할 수 있습니다

public class MyActivity extends Activity { 

    private MyAdapter adapter = new MyAdapter(); 

    public class MyAdapter extends CursorAdapter { 

     public MyAdapter() { 
      FragmentManager fm = MyActivity.this.getFragmentManager(); 
     } 
    } 
} 

를 중첩 사용하지 않을 경우, 클래스의 인스턴스를 액세스해야하는 클래스에 직접 전달할 수 있습니다.

public class MyActivity extends Activity { 

    private MyAdapter adapter = new MyAdapter(this); 
} 

public class MyAdapter extends CursorAdapter { 

    public MyAdapter(Activity activity, Cursor c, int flags) { 
     super(activity, c, flags); 
     FragmentManager fm = activity.getFragmentManager(); 
    } 
} 
+0

중첩되지 않습니다. 모든 코드가 맨 위에 첨부됩니다. 중첩되지 않은 예제를 이해하는지 확신 할 수 없습니다 ... 원하는 것을 들리지만 구현해야하는 방법을 이해하지 못합니다. 내가 두 번째 섹션을 구현할 때 \t'공공 CalcCursorAdapter (활동 활동) {(귀하의 예제에서 MyAdapter을 나는 이런 식으로 뭔가를 얻을 수) \t \t FragmentManager의 FM = activity.getFragmentManager(); \t}'와 저에게이 불만'암시 슈퍼 생성자 CursorAdapter를 (제공)는 정의되지 않습니다. 명시 적으로 다른 constructor' – Klaven

+0

를 호출해야합니다 내가 슈퍼 생성자 중 하나를 호출하는 방법을 보여주기 위해 예를 편집했다. 이러한 세부 사항 (사용자가 수락 한 다른 매개 변수와 호출하는 상위 생성자)은 상황에 맞게 변경할 수 있습니다. –

+0

이것은 널 포인터 오류를 반환했지만 클래스 이후에 더 많은 것을 처리해야합니다. 그리고 어떻게 진행되는지 알려 드리겠습니다. – Klaven

0

당신은 그 Activity에서 requeryList()를 호출 할?

첫째, 당신의 ActivityFragmentActivity를 확장해야합니다. FragmentFragmentActivity에서

((QCListFragment) getFragmentManager().findFragmentById(R.id.listFragment)).requeryList(); 

호출 방법하십시오 FragmentFragment에서

((QCListFragment) getSupportFragmentManager().findFragmentById(R.id.listFragment)).requeryList(); 

통화 방법 : 여기

는 모든 상황에서 메소드를 호출하는 방법입니다

((QCLisActivity) getActivity()).requeryList(); 
+0

제 조각으로 의사 소통하는 데 필요한 모든 것이 있습니다 ... 나는 단지 다른 클래스의 모든 기능을 수행 할 수 있어야합니다. – Klaven

+0

다른 FragmentActivity와 Fragment에서 함수를 호출해야한다는 것을 알았습니다. –