2 liangjifanzhuan2 liangjifanzhuan2 于 2016.04.24 17:17 提问

安卓数据库改变后,界面的刷新问题 1C

目前学习中遇到的一个问题,希望大神给予解决。
我的activity继承自tabActivity, 给里面的tabhost添加或者删除一个选项的时候,后台的数据库已经才做成功了。但是界面上的东西没办法立即刷新。
需要我退出当前activity然后再重新进来才能将界面刷新。

之前用的listview也存在这个问题,我用notifyDataSetChanged();这个函数解决了。但是现在是tabhost的选项卡添加问题,不知道怎么弄。

小弟刚学安卓,对一些基本的东西可能还不懂,希望有人能帮我找到解决这个问题的方法,万分感谢!

9个回答

baidu_23086307
baidu_23086307   2016.04.24 18:06

有具体代码吗?给代码看看

erichk2008
erichk2008   2016.04.24 18:35

你好,我也是新手,所以了解的可能不完全对。

百度了一下发现,在Android 4.0之后 Fragment取代了tabActivity,目前实现TabActivity的效果,用的比较多的是Fragment+ViewPager,你可以考虑优先研究这2个,在实际开发中用这两个的也比较多。

我没有用过tabActivity,也没看到你的代码,感觉你的意思是在onCreate()方法初始化页面之后,在用户操作时动态对tabhost进行删改,逻辑上虽然进行了更改,但是没有调用刷新页面的方法,所以你的Activity的页面是没有变化的。可以研究一下有没有对应的刷新页面的方法。

liangjifanzhuan2
liangjifanzhuan2 我现在就是找不到刷新方法= =!`好急
大约 2 年之前 回复
q610098308
q610098308   2016.04.24 21:34

view.invalidate();
重新绘制一下就可以了;

liangjifanzhuan2
liangjifanzhuan2 我也查了网上说可以用这个,但是涉及到什么线程啥的,我就晕了···不知道怎么用
大约 2 年之前 回复
q610098308
q610098308   2016.04.24 22:57

肯定需要在主线程刷新;
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()
    }
liangjifanzhuan2
liangjifanzhuan2 我在下面回复你了,大神帮我再看看吧 ,谢谢了!
大约 2 年之前 回复
liangjifanzhuan2
liangjifanzhuan2   2016.04.26 16:00

你好,我用这种方法试了下还是不行啊

这个是我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();已经执行
说明那个刷新的函数执行了啊,为什么界面还是没变?要怎么才能解决
我实在是基础不行,还望见谅···谢谢了

q610098308
q610098308   2016.04.26 16:22

你把界面截图出来吧,现在根本不清楚你出来的是什么样子。

liangjifanzhuan2
liangjifanzhuan2 已经有图了···谢谢··
大约 2 年之前 回复
liangjifanzhuan2
liangjifanzhuan2   2016.04.26 21:18

图片说明
这个是界面的图,我用的tabActivity ,创建tabhost的时候是用的一个数组str1用for循环添加出来的

现在我点那个加号,进行操作,把后台数据库改了(就是数组str1),现在要怎么实现 这个tab刷新出新的结果来, 目前我看有重新启动activity调用onCreate方法后才能改变。 我的tabhost的添加操作是在onCreate方法中的。

q610098308
q610098308   2016.04.27 09:33

1.我估计你也用到了 Adapter 也需要进行相应的通信数据改变,以刷新界面;
2.如果你用的是 FragmentPagerAdapter可以用notifyDataSetChanged(),在添加数据后刷新;

sinat_21406675
sinat_21406675   2016.04.27 09:52

监听数据库的变化 使用内容观察者

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android中刷新界面的二种方法
利用Handler刷新界面 实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面刷新;而在线程中通过sendMessage发送界面更新消息。 代码如下: // 在onCreate()中开启线程 new Thread(new GameThread()).start(); // 实例化一个handler Handler myHand
UITableView刷新某一行,改变数据源的问题
对于从字典中取值给cell赋值的,可以创建一个可变字典,每次从这个可变字典中取值赋值给cell,需要改变时,将这个可变字典中的值改变,然后再刷新即可。例如: [WebConnect webPOSTConnectWithWithStrUrl:E_BindingUrl pramaters:nil success:^(id responseObject) { NSLog(@"=====++
Rxjava +EventBus 数据库的异步操作和界面的刷新
Rxjava 实现数据库异步操作,返回的结果通过Eventbus 通知界面进行刷新
android利用广播实现本界面数据发生改变之后操作另外一个界面
先说一下我的需求,正在做公司的项目,个人中心界面A(一下简称A界面)是四个主界面的一个也就是底部导航中的最后一个,然后个人中心会有一个子界面设置以及修改个人信息的界面B(以下简称界面B),在B界面修改了信息之后跳回来之后不是需要A界面重新刷新界面嘛,当时图简单就直接在onReStart()重新请求数据。但是后来发现这样会造成流量浪费,没有修改信息的时候还是一样会重新请求。所以就想到用广播来优化下。
Android中更改SQLite数据库中的数据后,刷新ListView。
在对SQLite数据库操作后,ListView显示的数据却无法及时刷新,可以使用SwipeRefreshLayout实现下拉刷新,更新ListView。 将ListView放在SwipeRefreshLayout类中 <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipe_refresh"
JS脚本改变webView界面的问题
请问怎么使用一段JS代码,隐藏webView的头部,js代码有了: window.onload = function ()  {             document.getElementById('index-top').style.display = "none"; } 可是应该怎么在OC里面调用呢 我试了试在 - (void)webViewDidFinishLoad:(UI
ViewPager刷新问题详解
原文链接:简书diygreen,http://www.jianshu.com/p/266861496508一、PagerAdapter介绍先看效果图PageAdapter 使用示例 PagerAdapter简介 ListView 大家应该都很熟悉吧!ListView 一般都需要一个 Adapter 来填充数据,如 ArrayAdapter、SimpleAdapter。PagerAdapter 就
关于TabHost切换的时候刷新(更新)页面的问题
今天应老板的要求在却换TabHost的item的时候需要实现即时刷新,即每进入一个activity里面都必须重新更新ui,刚开始一听我就认为很简单,到做的时候才发现原来不走OnResume()生命周期,好家伙可把我给坑惨了,我在老板面前说分分钟搞定,哎,没办法继续研究代码看能不能解决呗天无绝人之路,总算让我找到方法实现这个功能了,没在老板面前丢脸啊。 首先是这个方法写在TabHostActivi
ADF 界面的刷新----patialtrige
谈到刷新,我觉得这个在WEB编程的时候,非常重要,有的是你不想让它全部刷新,有的时候,想让它部分刷新。在最近的编程当中,我所遇到的主要受1个地方的设置:partialtriggers,这个东西设置不好,后患无穷啊。我在做一个表格某一列有checkbox的时候,如果是选中某一行(根据checkBox来确定),界面就要刷新2次,首先是挪动到该行,然后是在选择,后来发现,新增按钮上的partialtri
Android 为什么当数据库改变时,与CursorAdapter关联的页面始终不更新
在android 开发过程中,也许有人会经常遇到这样的问题:CursorAdapter与一个list页面绑定,所有的代码都正确,CursorAdapter 与 Cursor也正常关联,但当数据库改变时list页面就是不更新!下面我们来看看源代码: CursorAdapter.java void init(Context context, Cursor c, boolean autoRequer