解决SlidingMenu中TextView动态设置setText无效的问题

最近用SlidingMenu遇到一个问题,想在滑动菜单栏的上方显示登录用户的名称和相关信息,下面是我的代码

    LayoutInflater inflater = getLayoutInflater().from(this);
    View view = inflater.inflate(R.layout.sliding_menu, null);
    TextView textView = (TextView) view.findViewById(R.id.user_name
);
    textView.setText("userName");

因为slidingmenu是单独写在一个布局文件中的,所以不能直接使用findViewById,要使用LayoutInflater。结果没起作用,主界面UI没有刷新

在网上搜了一堆,都说得用handler等处理,于是又改成如下:

class testThread extends Thread{
           public void run() {
              Message message = new Message();  
          mHandler.sendMessage(message); 
       }
}
private Handler mHandler = new Handler(){  
            public void handleMessage(Message msg) {  
                textView.setText("");
            };  
        };
结果还是没用,主页面UI根本不刷新,百度和谷歌搜索了一大堆,没有一个有用的解决办法,自己倒腾了一天,终于解决了,记录一下

解决方案:

让使用slidingmenu的activity继承一个新的activity,比如我在MainActivity中使用的slidingmenu,而我的MainActivity原本继承自AppCompatActivity,那我可以新建一个类newBaseActivity,让这个类继承AppCompatActivity,然后写一个setUserName的方法,代码如下

public class newBaseActivity extends AppCompatActivity {

    public void setUserName(String name) {
        LinearLayout layout = (LinearLayout) findViewById(R.id.menu);
        TextView textView = (TextView) layout.findViewById(R.id.user_name);
        textView.setText(name);
    }

}

然后 MainActivity继承自newBaseActivity,在MainActivity中,slidingmenu初始化之后,调用setUserName方法即可。

这样,问题就解决




扫描二维码关注公众号,回复: 3463048 查看本文章

猜你喜欢

转载自blog.csdn.net/tuoyakan9097/article/details/79137942