小编ang*_*guy的帖子

如何使用Async Task执行数据库操作

谷歌搜索解决方案后,我的应用程序在执行数据库操作时遇到困难,建议我使用AsyncTask,以免主线程被阻塞.

我创建了单独的类和扩展的SQLiteOpenHelper并实现了"OnCreate"和"OnUpgrade"方法.但是为了实现AsyncTask,我需要扩展"AsyncTask".现在我的问题是我已经扩展了一个类,我不能为同一个类扩展另一个类.

我的代码是这样的.

import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;

import com.example.project.R;

public class Database  extends SQLiteOpenHelper{

    static final String dbname="Project";
    static final int dbversion=1;

    TableA r=new TableA();


    SQLiteDatabase db;
    private Context Context;
    public Database(Context context) {
        super(context,  dbname, null, dbversion);
        try{
        db=getWritableDatabase();
        // TODO Auto-generated constructor stub
        if (db.isOpen()){

            System.out.println("Database is opened");
        }
            else{


                System.out.println("Database is not opened");
            }

        }
        catch(Exception e){

            Log.e(dbname, e.getMessage());

        }
    }


    @Override
    public void onCreate(SQLiteDatabase …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-asynctask

17
推荐指数
1
解决办法
3万
查看次数

你如何提示用户更新谷歌播放服务?

我可以轻松检测到我的设备的Google Play服务应用程序需要更新,并提供getErrorDialogFragment()以提示用户使用以下内容进行更新:

     GoogleApiAvailability googleApi = GoogleApiAvailability.getInstance();
     mServiceAvailabilityCode = googleApi.isGooglePlayServicesAvailable(this);
     if (mServiceAvailabilityCode == ConnectionResult.SUCCESS) {
          ...
     else {
        if (googleApi.isUserResolvableError(mServiceAvailabilityCode)) {
            switch (mServiceAvailabilityCode) {
                    ....
            case SERVICE_VERSION_UPDATE_REQUIRED:
                googleApi.showErrorDialogFragment(SplashActivity.this, mServiceAvailabilityCode, PLAY_SERVICES_RESOLUTION_REQUEST);
                break;
                    ....
                }
Run Code Online (Sandbox Code Playgroud)

但是,如果Google Play服务被禁用且已过期,则会向用户显示一个带有"更新"按钮的对话框,一旦用户按下该按钮,应用程序将立即返回到onActivityResult,然后我会捕获响应并在OnActivityResult中请求代码如下:

       @Override
       protected void onActivityResult(int requestCode, int mServiceAvailabilityCode, Intent data) {
          super.onActivityResult(requestCode, mServiceAvailabilityCode, data);
          switch (requestCode) {
          case PLAY_SERVICES_RESOLUTION_REQUEST:
                finish();
                // do i need to launch app manager-> app info for google play services ?
Run Code Online (Sandbox Code Playgroud)

因此,用户按下对话框上的"更新"按钮并未启动Android的Playstore并加载"Playstor服务"应用程序以供用户更新,这是我原本应该做的.按"更新"直接回到onActivityResult.这是我很困惑的地方.Android不应该为我推出这款产品吗?或者我必须自己在OnActivityResult中做到这一点?

android google-play-services

10
推荐指数
2
解决办法
5034
查看次数

如何在没有严格元素顺序的情况下定义DTD?

作为XML"noob",我在创建针对DTD验证的XML流/文件时发现了元素顺序的重要性.是否可以定义不依赖于元素的DTD?如果,那么请提供语法示例.

xml dtd

9
推荐指数
2
解决办法
7002
查看次数

添加"\ 0"(null)后是否可以将数据添加到字符串?

我有一个我正在创建的字符串,我需要在字符串中添加多个"\ 0"(空)字符.在每个空字符之间,是其他文本数据(Just ASCII字母数字字符).

我的问题是,在J2SE中添加第一个null(\ 0)时,java似乎确定它是一个字符串终止符(类似于C++),并忽略所有其他附加数据.不会引发错误,只会忽略尾随数据.我需要在字符串中的null之后强制添加其他尾随数据.我必须为我支持的遗留数据库执行此操作.

我试图对字符串进行编码/解码,希望像%00这样的东西会欺骗字符串行为的解释,但是当我重新编码字符串时,Java会再次看到空字符,并在第一个空字符后删除所有数据.

更新:这是相关的代码段.是的,我正在尝试使用Strings.我打算尝试使用字符,但我仍然需要将它作为字符串保存到数据库中,所以我怀疑我最终会遇到同样的问题.

一些背景.我通过HTTP帖子接收数据"\n".我需要删除换行符并用"\ 0"替换它们." debug"方法只是一种简单的方法System.out.println.

                String[] arrLines = sValue.split("\n");
                for(int k=0;k<arrLines.length;k++) {
                    if (0<k) {
                        sNewValue += "\0";
                    }
                    sNewValue+= arrLines[k];
                    debug("New value =" + sNewValue);
                }
Run Code Online (Sandbox Code Playgroud)

sNewValue是一个String,它被提交到数据库,需要以String的形式完成.当我sNewValue在控制台中每次迭代后显示当前值时,我观察到的是这样的:

input是value1 \nValue2 \nValue3控制台中的输出是通过此代码提供给我的

value1
value1
value1
Run Code Online (Sandbox Code Playgroud)

我期待着

value1
value1 value2
value1 value2 value3 
Run Code Online (Sandbox Code Playgroud)

在value1,value2和value3之间分别使用不可打印的null.请注意,实际保存回数据库的值也只是"value1".因此,它不仅仅是一个控制台显示问题.\ 0之后的数据被忽略.

java string terminator

8
推荐指数
1
解决办法
1万
查看次数

AsyncTaskLoader.deliverResult()实际上做了什么?

我试图了解AsyncTaskLoaders的一些细节.对于其他人来说,这可能是显而易见的,但我无法找到一个明确的示例或定义来演示和夸大当您覆盖该deliverResult()方法时会发生什么.实际交付的是什么?它如何与调用对象交互?我可以看到使用super.deliverResult,它从类中传递一个私有对象.那么,加载器是否自动知道与"交付结果"相关联的内容.我完全糊涂了.

android asynctaskloader

8
推荐指数
2
解决办法
3366
查看次数

设置错误Android

任何人都可以告诉我如何适当地使用SetError函数CheckBoxes和RadioButtons.我能够在textView之后引发错误图标符号(!)但看不到错误消息.根据Android的文档: 在复选框a和radioButton的情况下,你能否提供一个正确实现setError的例子?这是我的代码 -
sets the right-hand compound drawable of the TextView to the "error" icon and sets an error message that will be displayed in a popup when the TextView has focus. The icon and error message will be reset to null when any key events cause changes to the TextView's text. If the error is null, the error message and icon will be cleared.


CheckBox box=(CheckBox)findViewById(R.id.propertyStatus1);
box.setError("Error");
Run Code Online (Sandbox Code Playgroud)

android android-layout

7
推荐指数
1
解决办法
8531
查看次数

HttpServletRequest和getHeader():如何正确处理不区分大小写的标头?

由于我发现根据RFC,HTTP标头是大小写密集的,我想知道如何使用Servlet以不区分大小写的方式访问HTTP标头.有一个#getHeader(String)方法来获取头,但事实证明这个方法将头字段区分大小写.

获取标题字段是否有"不区分大小写"的方法?或者我是否必须迭代所有标题字段以查找我正在寻找的标题字段?

java servlets http-headers

6
推荐指数
1
解决办法
1万
查看次数

是否可以在Java 1.4中的列表中使用泛型?

我必须使用Java 1.4并使用arraylist结构.现在我需要做一些重新分解,如果我可以使用泛型,它会有所帮助.目前我有这样的代码

ArrayList rows = new ArrayList();
Run Code Online (Sandbox Code Playgroud)

这是一个简单的ArrayList.但现在"行"变量变得越来越复杂,需要定义一个"行"类.我现在想要做的事情就像你在J2SE 1.5中看到的那样

ArrayList<Row> rows = new ArrayList();
Run Code Online (Sandbox Code Playgroud)

如果没有使用第三方解决方案,谷歌的拖网不会暴露任何答案.如果不使用第三方解决方案/开源项目(如果可能的话),我的代码如何在1.4中进行更改以适应这种情况?

java generics jdk1.4

5
推荐指数
1
解决办法
7929
查看次数

回车问题从Java解码Base64并发送到浏览器

我有一个servlet已经调整大小并将图像编码到base64.我像这样编码

BufferedImage newBuf = .. a bufferedImage...
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, sImgFormat, baos);
baos.flush();
imageInBytes = baos.toByteArray();
Run Code Online (Sandbox Code Playgroud)

然后我将其编码为base64以像这样发送到浏览器

sun.misc.BASE64Encoder encoder = new BASE64Encoder();
String sEncImage = "data:image/jpg;base64," + encoder.encodeBuffer(imageInBytes);
Run Code Online (Sandbox Code Playgroud)

浏览器将接收编码,除了在字符串中一致嵌入的回车符("\n")之外,它会起作用,这会破坏图像.当我删除回车后返回图像没问题.有没有一种方法来生成没有回车符的编码.或者我必须在发回之前自行过滤掉它吗?

(我正在使用J2SE 1.4.2并需要继续这样做)

java base64 encoding carriage-return

5
推荐指数
1
解决办法
7072
查看次数

哪个 Java XML 解析器可以进行简单处理?

我正在 java 应用程序中生成一些 XML。我正在研究各种 XML 解析选项。除了遍历结构并从中提取值之外,我不想做任何其他事情。我需要使用内置于 Java API (1.5+) 中的其中之一,无需任何其他插件。我不需要创建“事件”或将其转化为其他任何东西。我不生成 XML,只是读取和提取数据。我也没有强制执行模式。

Sun 在这里提供了一个列表,但我应该使用什么并不是很明显。

http://java.sun.com/developer/technicalArticles/xml/JavaTechandXML/

在这种情况下,最适合使用的 XML API 是什么?贾克斯普?JDom?X 路径?

java xml parsing

4
推荐指数
1
解决办法
2614
查看次数