"음악가 목록", 음악 밴드, 연주자 및 작곡가 목록이있는 앱을 만들고 있습니다. 그들은 장르와 상대적 인기에 따라 분류됩니다.
주 활동에서 두 개의 탭이있는 "밴드 목록"활동으로 이동합니다. 그 중 하나는 일반 음악 장르 목록이있는 "장르"탭이며 각 장르를 클릭하면 두 개의 탭이있는 해당 활동으로 전송됩니다. 첫 번째 탭은 "모든"탭이고 다른 탭은 "인기있는"탭입니다. 각각의 탭에는 필터링 된 sqlite 데이터베이스가 포함 된 단편이 있습니다 (필자는 각 단편/장르에 대해 새로운 데이터베이스를 사용하는 대신 다른 단편에서 원하는 것을 보여주기 위해 필터링 된 하나의 큰 데이터베이스를 가짐). 이제는 7 개의 장르와 14 개의 클래스가 있습니다. 2 ("all"및 "popular")가 있습니다.
내가 지금하고 싶은 것은 데이터베이스를 다시 필터링하여 모든 목록에 대해 동일한 조각을 재활용함으로써 클래스 수를 2 개 (모두/인기) 또는 가능한 경우 하나만 줄이는 것입니다. 이렇게하려면 "모든"및 "인기있는"탭 (조각)이 들어있는 활동에 눌러 진 목록 항목 (장르)의 위치를 포함하는 "장르"조각에서 문자열을 보내야합니다. 해당 문자열을 파편으로 보내면 조각을 사용하여 sqlite 데이터베이스를 필터링합니다.크로스 프래그먼트 통신
프래그먼트 커뮤니케이션에 대한 Android 개발자 가이드를 읽으면서 추가해야하지만 코드를 사용하는 방법을 알지 못합니다. 조각을 조금 다르게 만들었으므로 xml에서 그것들을 정의하기 때문에, 나는 그 방법을 사용하는 방법을 모른다. 그리고 그와 같은 것들을 좀 더 사용하라.
public class TabListener<T extends Fragment> implements ActionBar.TabListener {
private Fragment mFragment;
private final Activity mActivity;
private final String mTag;
private final Class<T> mClass;
public TabListener(Activity activity, String tag, Class<T> clz) {
mActivity = activity;
mTag = tag;
mClass = clz;
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if (mFragment == null) {
mFragment = Fragment.instantiate(mActivity, mClass.getName());
ft.add(android.R.id.content, mFragment, mTag);
} else {
ft.attach(mFragment);
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if (mFragment != null) {
ft.detach(mFragment);
}
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
}
감사합니다,
Aleksa
개발자 가이드에 설명 된 콜백 메서드를 사용하고 거기에서 호스트 활동의 변수를 설정할 수 있습니다. 그럼 당신은 다른 조각을 주 활동에서 그 변수를 읽을 수 있습니다 .. –
그게 바로 내가 마지막 단락을 쓴 이유입니다 ... 어떻게'getSupportFragmentManager(). findFragmentById (R.id.article_fragment);' xml에를 지정할
murtaugh
콜백 메소드를 사용하기 위해 xml에 단편을 정의 할 필요가 없으며 단편의 ID가 정보를주고받을 필요가 없습니다. 왜 findFragmentById()를 사용해야하는지, 콜백을 사용하여 호스트 액티비티에 정보를 전달해야하는지, 그리고 새로운 프래그먼트가 인스턴스화 될 때 프로그래밍 방식으로 정보를 검색하는지 알 수 없다. –