2017-03-19 3 views
0

내 프로젝트는 퀴즈 용이며 조각을 만들었습니다. 탐색 버튼과 질문 표시기 (점)가있는 사용자 정의 도구 모음을 추가했습니다. 두 가지 문제가 발생했습니다.안드로이드 : 조각 모음의 사용자 정의 도구 모음

1. 툴바가 제스처로 또는 해당 /의 다음 버튼을 눌러 질문으로 /를 스 와이프합니다. 도구 모음은 새로운 조각으로 만들어집니다. 이 툴바가 정적이되기를 원합니다. 다음 번으로 스 와이프/클릭하면 콘텐츠 만 변경되고 툴바는 이동하지 않아야합니다.

나는

pager.setCurrentItem (pager.getCurrentItem() - 1, 진정한)을 변경하여 1 문제를 해결했습니다;
to
pager.setCurrentItem (pager.getCurrentItem() - 1, false); 첫번째 조각은 다음 버튼이 안 이전 버튼을 마지막 조각을하지 말았어야 -

2.I는/숨기기 특정 조각에 도구 모음에서 이전/다음 버튼을 보여주고 싶어요. 나는 (내가 AppCompatActivity로 변경 한)을 FragmentActivity 클래스의 가시성을 변경하려 시도했지만, 그것은 오류를 제공 - 나는 모든 조각에 <include layout="@layout/toolbar_layout"/>을 사용했습니다

"null 객체 참조에 setVisibility를 호출하려고" xml 파일을 도구 모음에 포함시킵니다.

도구 모음 XML

`<android.support.v7.widget.Toolbar android:id="@+id/toolbar2" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="?attr/colorAccent" 
android:minHeight="?attr/actionBarSize" 
android:theme="?attr/actionBarTheme" 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
    <ImageButton 
     android:contentDescription="previous" 
     android:id="@+id/previousQ" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="8dp" 
     android:onClick="previousQ" 
     android:visibility="invisible" 
     android:background="@android:color/transparent" 
     android:src="@drawable/ic_arrow_back_white" /> 
    <TextView 
     android:id="@+id/countQ" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:textSize="22sp" 
     android:text="●○○○○"/> 
    <ImageButton 
     android:contentDescription="next" 
     android:id="@+id/nextQ" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="8dp" 
     android:onClick="nextQ" 
     android:background="@android:color/transparent" 
     android:layout_alignParentRight="true" 
     android:src="@drawable/ic_arrow_forward_white" /> 
</RelativeLayout> 

`

FragmentActivity 클래스 버튼의 가시성을 변경하려 했는가

public class QuizActivity extends AppCompatActivity{ 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.view_pager); 
    ViewPager pager = (ViewPager) findViewById(R.id.viewPager); 
    pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager())); 
    Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar2); 
    setSupportActionBar(toolbar); 
} 

public void nextQ(View view) { 
    ViewPager pager = (ViewPager) findViewById(R.id.viewPager); 
    pager.setCurrentItem(pager.getCurrentItem() + 1,true); 
} 

public void previousQ(View view) { 
    ViewPager pager = (ViewPager) findViewById(R.id.viewPager); 
    pager.setCurrentItem(pager.getCurrentItem() - 1,true); 
} 
private class MyPagerAdapter extends FragmentPagerAdapter { 

    public MyPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int pos) { 
     switch(pos) { 
      case 0: return FirstFragment.newInstance("FirstFragment, Instance 1"); 
      case 1: return SecondFragment.newInstance("SecondFragment, Instance 1"); 
      case 2: return FirstFragment.newInstance("ThirdFragment, Instance 1"); 
      case 3: return FirstFragment.newInstance("ThirdFragment, Instance 1"); 
      case 4: return FirstFragment.newInstance("ThirdFragment, Instance 1"); 
      default: return FirstFragment.newInstance("ThirdFragment, Default"); 
     } 
    } 

    @Override 
    public int getCount() { 
     return 5; 
    } 
}' 

답변

0

? ID를 상대 레이아웃에 추가하고 다음과 같이 표시 유형을 변경해 볼 수 있습니다.

toolbar2.findViewById(R.id.relativeLayoutId).findViewById(R.id.nextQ) 

알려 주시면 알려 드리겠습니다.

+0

나는 당신이 말한 것을 시도했다 - 상대적 레이아웃 (toolbar1)에 ID를 추가 했는가? (여기에 확실하지 않은가?) toolbar2.toolbar1.findViewById (R.id.nextQ); 툴바 버튼 메소드에서 "툴바 심볼 1을 해결할 수 없습니다"라고 말합니다. – Buttercup

+0

아 죄송합니다. 내 대답을 편집합니다. 이드는 다음과 같아야합니다 : toolbar2.findViewById (R.id.toolbar1) .findViewById (R.id.nextQ) –

관련 문제