MenuItemClick的MainActivity.java代码:
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);
}
}
我的menu.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
类中(类应始终以大写字母开头),您需要创建一个setter方法,您可以在其中设置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
时才创建一个新实例。