我想更改textView(在mainActivity中)的属性,如textSize或textColor。
然后我尝试在设置活动中使用它。
View view = getLayoutInflater().inflate(R.layout.activity_main, null);
readTextView = view.findViewById(R.id.textView);
它不起作用。
另外,我试着How to update a TextView of an activity from another class这个答案。但是不是它只能改变文字吗?如果我需要更改多少属性,我必须在我的活动中创建一个方法。
答案 0 :(得分:0)
Android access main activity variables from another class
我引用了这个答案。
public static
您要更改的资源。[Your Activity].[The Resource]
。 我真的很抱歉这样问...抱歉。
答案 1 :(得分:0)
由于以下原因,您不得使用公共变量作为在活动中更新View的机制:
您无法确保活动始终存在。由于错误或您正在完成活动,系统很可能会被系统杀死。
您将自己的活动与其他课程联系起来。因此,每次您更改活动时,您的更改都有可能传播到另一个类。这可能会为多个类引入错误。
通过仅将视图作为参数发送,您最好从另一个类严格访问View。例如,如果您有以下活动:
public class YourActivity extends AppCompatActivity {
private TextView mTvName;
...
}
要更改mTvName
的属性,您需要创建以下内容:
public class TextChanger {
public static void maximizeTextSize(TextView tv) {
tv.setTextSize(30);
}
}
然后你可以在你的Activity中使用它:
TextChanger.maximizeTextSize(mTvName);
如果要从另一个Activity更新TextView,可以使用startActivityForResult
启动另一个Activity。然后,您需要通过覆盖活动中的onActivityResult
来接收结果以更改TextView。
如果您需要更新TextView而不与其他类或Activity进行任何耦合,则可以使用Event Bus
机制。您可以使用EventBus库。