android 中使用textview总是强行关闭的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 中使用textview总是强行关闭的问题相关的知识,希望对你有一定的参考价值。
package com.yarin.android.Examples_03_02;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.PhoneLookup;
import android.widget.TextView;
public class Activity01 extends Activity
public void onCreate(Bundle savedInstanceState)
TextView tv = new TextView(this);
String string = "";
super.onCreate(savedInstanceState);
//得到ContentResolver对象
ContentResolver cr = getContentResolver();
//取得电话本中开始一项的光标
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
//向下移动一下光标
while(cursor.moveToNext())
//取得联系人名字
int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String contact = cursor.getString(nameFieldColumnIndex);
//取得电话号码
int numberFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);
String number = cursor.getString(numberFieldColumnIndex);
string += (contact+":"+number+"\n");
cursor.close();
//设置TextView显示的内容
tv.setText(string);
//显示到屏幕
setContentView(tv);
这是书上的源码,总是强行关闭,请介绍下textview的用法,谢谢。
模拟器的电话本里有内容,我试了try,catch,还是这样,这是报错信息
CursorWindow Bad request for field slot 0,-1.numRows = 1,numColumns = 23
catch的异常如下:java.lang.IllegalStateException:get field slot from row 0 col -1 failed.
(另log不能粘贴复制么,我还要自己打字出来?)
楼上说得是有可能的,可能是你电话本里没有数据造成的。
我想是因为你的Cursor使用不当引起的,下面是Cursor的正确使用,你可以按这样来改。
像你程序里面While()里的是一个操作,是不可能结束的,是个死循环,直到出错。
在While前面加上一句:
cursor.moveToFirst();
while(!cursor.isAfterLast())
......
......
......
cursor.moveToNext();
cursor.close(); 参考技术A 强行关闭?你把Log日志贴出来看看,应该能看到什么地方出错的 参考技术B 你是在模拟器上运行的吧。。。
首先你的模拟器电话本里面有内容吗。。。
估计没有。。
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
cursor.moveToNext();
这两句执行,如果没记录,可以肯定出异常。。。。
ps: 最好用个try..catch..
电话本里面要有记录。。 参考技术C asfafsdafsa 参考技术D textview.settext(getResources().getString(R.string.app_name) + getResources().getString(R.string.two));
另外,站长团上有产品团购,便宜有保证
操作错误:现有连接被远程主机强行关闭。 (10054)
【中文标题】操作错误:现有连接被远程主机强行关闭。 (10054)【英文标题】:Operational Error: An Existing connection was forcibly closed by the remote host. (10054) 【发布时间】:2021-06-09 09:10:59 【问题描述】:我收到此操作错误,可能是在应用程序长时间不活动或空闲时定期出现的。刷新页面时它会消失。我在 Formhandlers 和 gramex 的 DbAuth 中使用 mssql pyodbc 连接字符串(“mssql+pyodbc:///?odbc_connect= ...”)
如何在 gramex 中保持连接有效?
Screenshot of error
【问题讨论】:
您能否详细说明您的问题?你哪里有这个问题?什么编程语言?你想达到什么目的?你能把你的截图也放在这里吗? 【参考方案1】:添加pool_pre_ping
和pool_recycle
参数。
pool_pre_ping
通常会发出等同于“SELECT 1”的 SQL;如果出现一个被检测为“断开”情况的错误,连接将立即被回收。 Read more
pool_recycle
防止池使用已超过特定年龄的特定连接。 Read more
例如:engine = create_engine(connection_string, encoding='utf-8', pool_pre_ping=True, pool_recycle=3600)
或者,您可以在gramex.yaml
中为 FormHandler 添加这些参数。这仅对带有连接字符串的第一个 FormHandler 是必需的。
kwargs:
url: ...
table: ...
pool_pre_ping: True
pool_recycle: 60
【讨论】:
以上是关于android 中使用textview总是强行关闭的问题的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio Adb 连接报错:一个现有连接被远程主机强行关闭
如何在android中制作带有Image和textview的Button? [关闭]
在Android中点击屏幕时如何在屏幕上显示多个标签(Textview)..? [关闭]