mainActivity.java代码menuitemclick:
mtoolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.readatnight:
//how to write
}
MainActivity.java中的ViewPagerAdapter类:
private class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm){
super(fm);
}
@Override
public long getItemId(int positions) {
return super.getItemId(positions);
}
@Override
public Fragment getItem(int positions){
Fragment fragment = null;
switch (positions) {
case 0:
fragment = new fragment0();
break;
}
return fragment;
}
@Override
public int getCount() {return 1;}
}
我的fragment0.java:
public class fragment0 extends Fragment {
TextView mtxts;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.testss, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mtxts = (TextView) getView().findViewById(R.id.txts);
mtxts.setText(R.string.A0101);
}
}
我的菜单:xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/readatnight"
app:showAsAction="ifRoom"
android:icon="@drawable/moonc"
android:title="夜讀模式"/>
</menu>
我的问题是如何编写menuitemclick事件,以改变我的片段的文字大小,背景颜色和文本颜色?
首先在您的Fragment0
类中(类应始终以大写字母开头(,您需要创建一个设置方法,您可以在其中设置TextView
的内容:
public void setText(String text) {
mtxts.setText(text);
}
在您的MainActivity
中,抓住片段的实例并将其施加到Fragment0
。在您的情况下,这应该是安全的,因为索引0将始终返回Fragment0
的实例,这是您的SectionsPagerAdapter
称为mFragmentAgapter
switch (item.getItemId()) {
case R.id.readatnight:
Fragment0 fragment = (Fragment0) mFragmentAdapter.getItem(0);
fragment.setText("Hello world, 晚安!");
break;
}
并在您的Fragment0
中添加其他设置器方法,以进行文本颜色等。
要记住的一件事,每次调用getItem(int)
时,您总是创建一个片段的新实例。相反,您应保留对片段的参考,并且仅在该引用为 null
时创建一个新实例。
尝试此
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.training1_fragment, container,
false);
setHasOptionMenu(true);
return v;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_save :
{
//Write here what to do you on click
return true;
}
}
return super.onOptionsItemSelected(item);
}