无法在不同的片段类中更改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
上一篇: Can not change value of textsize in ListView in different fragment class