0
내 앱에서 왼쪽에는 가로 레이아웃의 목록이 있고 오른쪽에는 뷰 파인더가 포함 된 조각 (다른 조각을 스 와이프하기)이있는 액티비티가 있어야합니다. 내 문제는 중첩 된 조각이있을 것입니다. 왜냐하면 뷰 페이지가 포함 된 조각에 스 와이프 할 수있는 여러 조각이 포함되어 있기 때문입니다. 내 목록을 내 viewpager 옆에 표시 할 수있는 솔루션이 있습니까? 목록이 포함 된 단편을 포함 활동의조각에있는 뷰 페이지
레이아웃 및 viewpager와 조각 : 여기
내 레이아웃 파일입니다.<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false" >
<fragment
android:id="@+id/cafelijst"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
class="com.example.projectapp.cafezoeken.CafeLijstFragment" />
<FrameLayout
android:id="@+id/details"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
viewpager로 단편의 레이아웃.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
뷰 페이지가 포함 된 조각. 나는이 당신을 위해 작동 희망
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
private ArrayList<Fragment> mMyFragments = new ArrayList<Fragment>();
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
//... add Fragments to mMyFragments
}
@Override
public Fragment getItem(int position) {
return mMyFragments.get(position);
}
@Override
public int getCount() {
return NUM_PAGES;
}
}
:
import com.example.projectapp.R;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* A placeholder fragment containing a simple view.
*/
public class CafeSwipeFragment extends Fragment implements ActionBar.TabListener {
CafeDetailsPagerAdapter mPagerAdapter;
ViewPager mViewPager;
View mView;
public static int index;
ActionBar actionBar;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_cafe_details, container, false);
mViewPager = (ViewPager) mView.findViewById(R.id.pager);
mPagerAdapter = new CafeDetailsPagerAdapter(getFragmentManager());
// Set up the action bar.
actionBar = getActivity().getActionBar();
for (int i = 0; i < mPagerAdapter.getCount(); i++) {
// Create a tab with text corresponding to the page title defined by the adapter.
// Also specify this Activity object, which implements the TabListener interface, as the
// listener for when this tab is selected.
actionBar.addTab(actionBar.newTab().setText(mPagerAdapter.getPageTitle(i)).setTabListener(this));
}
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// When swiping between different app sections, select the corresponding tab.
// We can also use ActionBar.Tab#select() to do this if we have a reference to the
// Tab.
actionBar.setSelectedNavigationItem(position);
}
});
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// When swiping between different app sections, select the corresponding tab.
// We can also use ActionBar.Tab#select() to do this if we have a reference to the
// Tab.
actionBar.setSelectedNavigationItem(position);
}
});
Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
mViewPager.setAdapter(mPagerAdapter);
}
});
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
return mView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
public static CafeSwipeFragment newInstance(int index) {
CafeSwipeFragment f = new CafeSwipeFragment();
CafeSwipeFragment.index = index;
return f;
}
public int getShownIndex() {
return index;
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
}
04-15 00:06:09.325: E/AndroidRuntime(15335): FATAL EXCEPTION: main
04-15 00:06:09.325: E/AndroidRuntime(15335): java.lang.IllegalStateException: Can't change container ID of fragment InfoFragment{41a85050 #0 id=0x7f05005a android:switcher:2131034202:0}: was 2131034202 now 2131034203
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:407)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:429)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:421)
04-15 00:06:09.325: E/AndroidRuntime(15335): at com.example.projectapp.cafezoeken.infotab.InfoFragment.onCreateView(InfoFragment.java:22)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.support.v4.view.ViewPager.setAdapter(ViewPager.java:442)
04-15 00:06:09.325: E/AndroidRuntime(15335): at com.example.projectapp.cafezoeken.CafeSwipeFragment$3.run(CafeSwipeFragment.java:75)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.os.Handler.handleCallback(Handler.java:615)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.os.Handler.dispatchMessage(Handler.java:92)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.os.Looper.loop(Looper.java:155)
04-15 00:06:09.325: E/AndroidRuntime(15335): at android.app.ActivityThread.main(ActivityThread.java:5520)
04-15 00:06:09.325: E/AndroidRuntime(15335): at java.lang.reflect.Method.invokeNative(Native Method)
04-15 00:06:09.325: E/AndroidRuntime(15335): at java.lang.reflect.Method.invoke(Method.java:511)
04-15 00:06:09.325: E/AndroidRuntime(15335): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)
04-15 00:06:09.325: E/AndroidRuntime(15335): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)
04-15 00:06:09.325: E/AndroidRuntime(15335): at dalvik.system.NativeStart.main(Native Method)
나는 끝 태그를 가정 해 "" ""해야? – Stein
오 예. 그것을 바꿨습니다. – speedy1034
또 다른 질문이 있습니다. 클래스/메소드를 사용하여 레이아웃을 확장해야합니까? – Stein