首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >android自定义列表查看位置和点击事件问题(列表从服务器获取动态数据)

android自定义列表查看位置和点击事件问题(列表从服务器获取动态数据)
EN

Stack Overflow用户
提问于 2012-02-29 13:59:03
回答 2查看 589关注 0票数 0

我需要一个帮助我的列表视图我正面临着一个问题,即获取新数据后,每3秒,因为我问你工作得很好now.but有一个问题,当我点击列表行(启动新活动,显示访问者详细信息页面)我正在传递一些数据从列表视图行到另一个activity.my的问题是,列表视图获取新数据后,每3秒,当我点击列表行,然后下一个活动开始,并显示访问者详细信息页面的案例更新方法被调用之前,单击列表视图行,但如果我点击该行,同时收到新数据,并添加到行,应用程序崩溃。

我应该怎么做,这样我的应用程序才不会崩溃,并且在单击行或行的按钮时工作正常。我将与该行相关的sessiontext和iptext传递给下一个活动。

我的类代码遵循下面给出的链接。http://www.coderanch.com/t/568877/Android/Mobile/android-custom-list-view-position#2585198 eranch.com/t/568803/Android/Mobile/start-new-activity-when-click

当我单击listiview行更新列表方法时,我更希望我的应用程序停止并启动新活动,而当我从新活动返回时,更新方法再次启动,这怎么可能呢?

当我返回到下一个活动时,我的logcat如下所示.............

代码语言:javascript
复制
02-29 12:53:53.463: E/AndroidRuntime(5066): FATAL EXCEPTION: main
02-29 12:53:53.463: E/AndroidRuntime(5066): java.lang.RuntimeException: Unable to resume activity {com.live2support/com.live2support.L2STest}: java.lang.IllegalStateException: Timer was cancelled
02-29 12:53:53.463: E/AndroidRuntime(5066):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3128)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2059)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at android.os.Looper.loop(Looper.java:123)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at android.app.ActivityThread.main(ActivityThread.java:4627)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at java.lang.reflect.Method.invokeNative(Native Method)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at java.lang.reflect.Method.invoke(Method.java:521)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at dalvik.system.NativeStart.main(Native Method)
02-29 12:53:53.463: E/AndroidRuntime(5066): Caused by: java.lang.IllegalStateException: Timer was cancelled
02-29 12:53:53.463: E/AndroidRuntime(5066):     at java.util.Timer.scheduleImpl(Timer.java:566)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at java.util.Timer.schedule(Timer.java:485)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at com.live2support.BaseActivity.onStart(BaseActivity.java:157)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at com.live2support.BaseActivity.onRestart(BaseActivity.java:932)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at android.app.Instrumentation.callActivityOnRestart(Instrumentation.java:1139)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at android.app.Activity.performRestart(Activity.java:3805)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at android.app.ActivityThread.performRestartActivity(ActivityThread.java:3477)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:160)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at android.app.LocalActivityManager.dispatchResume(LocalActivityManager.java:518)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at android.app.ActivityGroup.onResume(ActivityGroup.java:58)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at android.app.Activity.performResume(Activity.java:3823)
02-29 12:53:53.463: E/AndroidRuntime(5066):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118)

当我点击listrow应用程序崩溃时,在这种情况下,新的数据更新调用开始,我清除了我的事件的计时器和代码,就像这样,有时会使我的应用程序崩溃......

新建(convertView.setOnClickListener OnClickListener(){

代码语言:javascript
复制
                    public void onClick(View v) {
                        timer.purge();
                        if(SessionText.get(position)!=null&&IPText.get(position)!=null){
                        Intent i=new Intent(BaseActivity.this,VisitorDetail.class);
                        i.putExtra("ID", id);
                        i.putExtra("Position",position);
                        i.putExtra("From", from);
                        i.putExtra("SessionText", SessionText.get(position));
                        i.putExtra("IPTEXT",IPText.get(position));
                        startActivity(i);

                        }

                        else{

                            timer.schedule(new TimerTask() {
                                public void run() {
                                    TimerMethod();
                                }

                            }, 0, 3000); 
                        }



                    }});

任何人都可以帮助我解决这个问题...............

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-29 14:08:13

取消计时器计时器,这样当你点击一个项目时,它不会更新数据,如果在点击项目后需要计时器,在调用startActivity之后,再次启动计时器。

票数 1
EN

Stack Overflow用户

发布于 2012-02-29 14:12:59

使用java同步块

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9494241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档