问题描述
- 安卓数据库改变后,界面的刷新问题
-
目前学习中遇到的一个问题,希望大神给予解决。
我的activity继承自tabActivity, 给里面的tabhost添加或者删除一个选项的时候,后台的数据库已经才做成功了。但是界面上的东西没办法立即刷新。
需要我退出当前activity然后再重新进来才能将界面刷新。之前用的listview也存在这个问题,我用notifyDataSetChanged();这个函数解决了。但是现在是tabhost的选项卡添加问题,不知道怎么弄。
小弟刚学安卓,对一些基本的东西可能还不懂,希望有人能帮我找到解决这个问题的方法,万分感谢!
解决方案
有具体代码吗?给代码看看
解决方案二:
你好,我也是新手,所以了解的可能不完全对。
百度了一下发现,在Android 4.0之后 Fragment取代了tabActivity,目前实现TabActivity的效果,用的比较多的是Fragment+ViewPager,你可以考虑优先研究这2个,在实际开发中用这两个的也比较多。
我没有用过tabActivity,也没看到你的代码,感觉你的意思是在onCreate()方法初始化页面之后,在用户操作时动态对tabhost进行删改,逻辑上虽然进行了更改,但是没有调用刷新页面的方法,所以你的Activity的页面是没有变化的。可以研究一下有没有对应的刷新页面的方法。
解决方案三:
view.invalidate();
重新绘制一下就可以了;
解决方案四:
肯定需要在主线程刷新;
private View mContentView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
mContentView = LayoutInflater.from(this).inflate(R.layout.activity_note, null);
setContentView(mContentView);
要刷新的就是整个 view ;
如果你是点击触发的,处理完后刷新一下就可以:
@Override
public void onClick(View v) {
mContentView.invalidate()
}
解决方案五:
你好,我用这种方法试了下还是不行啊
这个是我onCreate方法里的代码
handler = new Handler(){
@Override
public void handleMessage(Message msg){
super.handleMessage(msg);
if(msg.what ==1){
Log.i("日志","handle接受消息成功");
cursorTab.requery();
textView.invalidate();
Log.i("日志", "刷新函数textView.invalidate();已经执行");
}
}
};
handler是 定义在activity中的 static public Handler handler;
然后在另一个java文件中代码如下
Message message=new Message();
message.what=1;
Log.i("日志", "删除子项目");
AtyText.handler.sendMessage(message);
最后日志打印出了
04-26 15:49:58.235 8126-8126/com.example.administrator.text20160310 I/日志: handle接受消息成功
04-26 15:49:58.236 8126-8126/com.example.administrator.text20160310 I/日志: 刷新函数textView.invalidate();已经执行
说明那个刷新的函数执行了啊,为什么界面还是没变?要怎么才能解决
我实在是基础不行,还望见谅···谢谢了
解决方案六:
你把界面截图出来吧,现在根本不清楚你出来的是什么样子。
解决方案七:
这个是界面的图,我用的tabActivity ,创建tabhost的时候是用的一个数组str1用for循环添加出来的
现在我点那个加号,进行操作,把后台数据库改了(就是数组str1),现在要怎么实现 这个tab刷新出新的结果来, 目前我看有重新启动activity调用onCreate方法后才能改变。 我的tabhost的添加操作是在onCreate方法中的。
解决方案八:
1.我估计你也用到了 Adapter 也需要进行相应的通信数据改变,以刷新界面;
2.如果你用的是 FragmentPagerAdapter可以用notifyDataSetChanged(),在添加数据后刷新;
解决方案九:
监听数据库的变化 使用内容观察者