2016-11-09 8 views
0

Ich bin eine Aktivität mit zwei Fragmente zu machen, und ich möchte die Farbe jedes Fragments ändern, wenn ich zu ihm zu gehen. Ich habeNicht in der Lage Farbe des Fragments Symbolleiste zu ändern

versucht
getActionBar() 

und

setColorDrawable() 

aber es kehrt null. Hier ist meine Aktivität und Fragment.

 public class MenuPage extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 


private TabLayout tabLayout; 
private ViewPager viewPager; 



public List<Food> orderedList = new ArrayList<>(); 



@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_menu_page); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 


    viewPager = (ViewPager) findViewById(R.id.viewpager); 
    setupViewPager(viewPager); 

    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 
} 

    private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new Veg(), "VEG"); 
    adapter.addFragment(new NonVeg(), "NON-VEG"); 
    viewPager.setAdapter(adapter); 
} 

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 
} 

und hier ist mein Fragment

public class Veg extends Fragment{ 

public Veg() { 
} 



public static Veg newInstance(String param1, String param2) { 
    Veg fragment = new Veg(); 
    Bundle args = new Bundle(); 
    args.putString(ARG_PARAM1, param1); 
    args.putString(ARG_PARAM2, param2); 
    fragment.setArguments(args); 
    return fragment; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getArguments() != null) { 
     mParam1 = getArguments().getString(ARG_PARAM1); 
     mParam2 = getArguments().getString(ARG_PARAM2); 
    } 
} 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

}

Bitte helfen Sie, ich bin stecken ...

+0

Wo ist der Farbänderungscode in Fragmente zu setzen? – androidnoobdev

Antwort

0

Wie Sie AppCompactActivity verwenden, müssen Sie getSupportActionBar() verwenden statt getActionBar().

0

Verwenden Sie diese Codezeile in Ihrer Menüseite Aktivität benutzerdefinierte Farbe in Ihrem Fragmente Symbolleiste

getSupportActionBar().setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#00695C"))); 
+0

Aber ich will die Farbe ändern, als ich das Fragment ändern. @ Sudip Podder –

+0

suchen Sie so etwas wie [das] (https://gfycat.com/CautiousBewitchedJabiru)? Dann können Sie [diesen Link] folgen (http://stackoverflow.com/a/26813188/5829624). –

Verwandte Themen