如何正确访问和更改其他视图

时间:2015-01-21 20:58:03

标签: java android view wear-os onlongclicklistener

我正在尝试构建一个函数,如果页面被长按,则颜色方案将在应用程序的每个页面上变为黑白。如果长时间单击页面或其他页面,则更改应还原。这是我的样本。如果您想查看更具体的代码,请告诉我们。

View sigView;
View rootView;
View tunerView;
public boolean pm;
public SharedPreferences sharedPreferences;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    sigView = inflater.inflate(R.layout.time_sig, container,false);
    rootView=inflater.inflate(R.layout.activity_metronome,container);
    tunerView=inflater.inflate(R.layout.activity_tuner,container);

    final TextView tvTempo=(TextView) rootView.findViewById(R.id.metro_disp);
    final TextView NumView = (TextView) sigView.findViewById(R.id.Sig_Num);
    final TextView tv_note=(TextView) tunerView.findViewById(R.id.tv_note);        
    final ImageView time_sig_bar= ImageView)sigView.findViewById(R.id.time_sig_bar);

    //**Lots more lines just like above for other elements

time_sig_bar.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View view) {
            if (!pm) {
                rootView.setBackgroundColor(Color.BLACK);
                //**Code to run

                pm=true;
                sharedPreferences.edit().putBoolean("pm",pm).apply();
            } else{
                rootView.setBackgroundColor(Color.TRANSPARENT);
            //**More code to run

                pm=false;
                sharedPreferences.edit().putBoolean("pm",pm).apply();
            }
//**code is copied for other elements to respond to longclick

我将此代码复制并粘贴到其他页面(稍作修改)。在其他页面之一上,该页面上的元素会发生变化,但不会更改其他页面上的元素。此外,我不知道如何设置它,以便颜色将从另一页更改回来。我有什么想法我做错了吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

可能有一个新类,用于保存视图的状态数据。如果长时间点击则为真,否则为假。然后你可以将longlick上的状态设置为当前状态

的状态