新手求助:关于Activity间跳转的小问题

============问题描述============

两个Activity,A和B。

A里边主要有一个listview,显示数据库里的东西;B由A跳转过来,里边有一些操作,2个按钮X和Y,X是直接返回A,Y是更新数据库然后返回A。

问题在这里:A跳转B时,没有使用finish(),这样X就可以finish()掉B直接就返回A了,A也不用重新绘制布局,这没问题。但是Y操作回到A我就不会了,这时回到A需要更新其中内容了(重新绘制布局)。我尝试用startActivityForResult来跳转,Y操作后在A的onActivityResult里执行更新listview的适配器,但是运行后A仍然没有发生刷新(但是onActivityResult里的Toast是执行了),也没报错。是我刷新listview的操作不对吗?

求指教

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if(resultCode==RESULT_OK){

Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show();

myAdapter=new MyActivityAdapter(MyActivity.this,annList);

myAdapter.notifyDataSetChanged();

listview.setAdapter(myAdapter);

}

}

============解决方案1============

创建Adapter和setAdapter不要在OnActivityResult函数里调用,而是应该在onCreate里调用。

onActivityResult里只要修改数据对象annList,然后调用notifyDataSetChanged就可以。

============解决方案2============

引用 6 楼 TheUnforgiven 的回复:

Quote: 引用 3 楼 kifile 的回复:

额,刚才没看清楚代码,你的问题其实是 myAdapter 设置错误,,你在 onActivityResult 中重新初始化了 myAdapter, 先调用了 notify,然后才 set,你可以更改一下顺序呢,,,不过建议是只更改 mAdapter 中的数据,不要重新初始化,然后直接使用 notifyDataChanged 就好了

问题最终解决了,还是onActivityResult里边的问题:

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if(resultCode==RESULT_OK){

Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show();

annList=getData();

myAdapter=new MyActivityAdapter(MyActivity.this,annList);

listview.setAdapter(myAdapter);

}

}

可能是我的代码的结构有问题吧,我的MyActivityAdapter是单独一个class文件,没有放在MyActivity.class里,所以只能先new,再setAdapter。ps:我这样结构不合理吗?

这个无所谓 Adapter 的位置的,主要是你的 annList 是通过 getData()获取的,相当于一个新的 list, 因此你调用 notifyDataChange 的时候,数据其实是没有更新的,正确的使用方式是  annList.clear(); annList.addAll(getData());,myAdapter.notifyDataChanged();

时间: 2024-10-16 23:55:06

新手求助:关于Activity间跳转的小问题的相关文章

Android Activity间动画跳转

本博文主要介绍activity间动画跳转的问题,在这里讲一下怎么设置全部activity的动画跳转和退出跳转.事实上有些软件已经这样做了.比方我们都比較熟悉的大众点评网. 以下我们通过一个实例来看一下怎么实现全部activity动画跳转.这里我们最好还是就模仿下大众点评网activity的动画跳转. 首先在layout/anim新建    anim_enter.xml [html] view plaincopy <? xml version="1.0" encoding=&quo

android开发 Activity间消息的传递方式

<pre name="code" class="java">//MainActivity.java Intent intent = new Intent(); Bundle bundle = new Bundle(); bundle.putInt("data1", 10); bundle.putString("data2", "data"); //从当前的MainActivity 切换到Acti

Android开发学习笔记之四大组件---Activity的跳转,数据传递(二)

上一章我们温习了Activity的创建,以及各生命周期,这一章我们主要学习Activity的跳转,以及Activity之间的数据传递 一.Activity跳转: Activity之间的单纯跳转非常简单,只需要创建两个Activity,然后使用startActivity(intent)来进行跳转,看下代码: Intent uio=new Intent(thisActivityclass,ActivityBclass); startActivity(uio); Intent是什么? Android中

Activity间传值的方式

原文地址:https://blog.csdn.net/qq_33748378/article/details/53023036 Activity间的跳转: 要了解Activity间的传值,首先得知道actvivity是怎么跳转的.Activity间的跳转有隐式和显式两种方式,代码如下: // 显式 Intent intent = new Intent(this,SecondActivity.class); /* Intent intent = new Intent(); intent.setCl

自定义Activity的跳转动画

本来感觉是一个很小的需求, 后来发现老是 出问题, 使用Theme在 4.0上 操作不是很好用. 后来查阅资料, 需要在finish 后面 和 startActivity 后面添加 overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out); 这句话 但是每个地方都添加这个代码也很坑爹, 于是看了一下ECShop的实现,发现是在BaseActivity加入的.. @Override public void star

android之activity间传输数据

MainActivity如下: package com.example.helloworld; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainA

Spring MVC controller间跳转 重定向 传参 (转)

鸣谢:http://blog.sina.com.cn/s/blog_a85398ce0101f93x.html 1. 需求背景 需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. 2. 解决办法 需求有了肯定是解决办法了,一一解决,说明下spring的跳转方式很多很多,我这里只是说一些自我认为好用的,常用的,spring分装的一些类和方法. (1)我在后台一个controller跳转到另一个

实现Activity间的共享控件转场动画

实现Activity间的共享控件转场动画 字数1210 阅读1936 评论9 喜欢35 Lollipop中有shared_element可以进行元素在activity之间进行共享,网上已经有很多介绍了,然而目前还有大量的kitkat设备,所以说啊,兼容更重要. 如下的方法,可以实现在旧的手机上实现动画效果.采用了类似于豌豆荚的开眼项目使用的技术.github上可能有在5.0以下的兼容包,但是个人并不推荐使用第三方的UI工具. Preview 实现原理 最近逛业界良心酷安网,发现了豌豆荚的一款叫做

android入门:activity之间跳转,并且回传参数

介绍: 两个activity进行跳转,在跳转过程中,将message由MainActivity传递到secondActivity,并且当secondActivity退回至MainActivity时,也传递消息给MainActivity. 首先是MainActivity的布局文件: activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=