无法在不同的片段类中更改ListView中的文本大小的值

我想在不同的片段类中改变ListView中的文本大小。 我将其他类中的变量声明为

public static TextView title;

然后我通过使用类片段更改该文本大小的值。

title.setTextSize(30);

当我点击回其他活动时,它不起作用。

这是我的代码:

public class Setting extends AppCompatActivity {

    private RadioGroup Text_Size;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_setting);

        Text_Size = (RadioGroup) findViewById(R.id.radiogroup);
        Text_Size.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {

                switch (checkedId) {
                    case R.id.small:
                        HotNewsFrag.title.setTextSize(15);
                        break;
                    case R.id.medium:
                        HotNewsFrag.title.setTextSize(20);
                        break;
                    case R.id.big:
                        HotNewsFrag.title.setTextSize(30);
                        break;
                    default:
                        break;
                }
            }
        });

        LinearLayout back = (LinearLayout) findViewById(R.id.back1);
        back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent setting = new Intent(Setting.this, MainActivity.class);
                startActivity(setting);
            }
        });
    }
}

这是我的片段:

public class HotNewsFrag extends Fragment {

    private View view;
    private ListView listOfNews;
    ListViewAdapter adapter;
    ArrayList<HotNews> arraylist1;
    public static String newsid;
    public static TextView title;
}

你处理这种方式是完全错误的。

大问题:将文本视图定义为静态会导致内存泄漏,并阻止您的视图和活动被垃圾收集。

这里有两种方法:

第一:共享优惠和ONRESUME

您可以将文本大小存储在sharedPreference中以及您的活动或片段中,然后重写onResume并将文本大小再次设置为我们的textsview,方法是使用之前存储的sharedPreference中的值

第二:广播接收机

您可以使用广播接收器并将其注册到任何地方。 无论用户何时更改文字大小,您都可以发送本地广播并在注册该文字时更改文字大小。

Text_Size.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            int txtSize=0;
            switch (checkedId)
            {
                case R.id.small:
                    txtSize=15;
                    break;
                case R.id.medium:
                    txtSize=20;
                    break;
                case R.id.big:
                    txtSize=30;
                    break;
                default:
                    break;
            }
                Setting.this.getSharedPreferences("MY_SHARED",0).edit().putInt("FONT_SIZE",txtSize).commit();
        }
    });

在你的片段中

 @Override
public void onResume() {
    super.onResume();
    title.setTextSize(getActivity().getSharedPreferences("MY_SHARED",0).getInt("FONT_SIZE",20));
    ADAPTER_OF_YOUR_LISTVIEW.notifyAll();
}

如果你只是想让文本变得强调,请尝试使用SetTypeFace.BOLD

链接地址: http://www.djcxy.com/p/78921.html

上一篇: Can not change value of textsize in ListView in different fragment class

下一篇: How can I create a login form in preference fragment