如何通过菜单项单击更改我的片段的文本



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);
 }

最新更新