2015-04-29 59 views
0

这是我的代码:错误:请求索引0,大小为0.我该如何解决?

package com.dev.paolo.sicinf; 

import android.content.Intent; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.view.View; 
import android.widget.ListView; 

import java.math.BigInteger; 

import java.sql.SQLException; 
import java.util.LinkedList; 
import java.util.List; 


public class KeySettings extends ActionBarActivity { 

    public void generateKey(View view) 
    { 
     Intent RSA = new Intent (this, RSA.class); 
     startActivity(RSA); 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_key_settings); 
     ListView listView = (ListView)findViewById(R.id.list_keys); 
     List list = new LinkedList(); 
     ManagerDB db = new ManagerDB(this); 
     Cursor c= null; 
     String textD,textE,textN; 
     BigInteger d,e,N; 
     try { 
      db.open(); 
     } catch (SQLException a) { 
      a.printStackTrace(); 
     } 
     try 
     { 
      c = db.getKey(0); 
     } 
     catch (SQLException a) 
     { 
      a.printStackTrace(); 
     } 
     textD = c.getString(2); 
     d = new BigInteger(textD); 
     try 
     { 
      c = db.getKey(1); 
     } 
     catch (SQLException a) { 
      a.printStackTrace(); 
     } 
     textE = c.getString(2); 
     e = new BigInteger(textE); 
     try 
     { 
      c = db.getKey(2); 
     } catch (SQLException a) 
     { 
      a.printStackTrace(); 
     } 
     textN = c.getString(2); 
     N = new BigInteger(textN); 
     db.close(); 
     list.add(new Key("Public Key",e + " , " + N)); 
     list.add(new Key("Private Key",d + " , " + N)); 
     CustomAdapter adapter = new CustomAdapter(this,R.layout.rowcustom,list); 
     listView.setAdapter(adapter); 
    } 
} 

,这是错误报道:

at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365) 
at android.app.ActivityThread.access$800(ActivityThread.java:164) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:157) 
at android.app.ActivityThread.main(ActivityThread.java:5350) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 

我不知道如何解决这个问题。我已经尝试了很多在线的指南,但我还没有找到解决方案。

+0

错误在哪个方法/行 – Keshav1234

+0

您的光标是空的。 –

+0

Der Golem你能告诉我如何解决? –

回答

0

发生此错误的原因是db.getKey()试图访问空列表中的第一项(我猜这里是一个键列表)。您需要在到达此点之前向数据库添加某些内容,或者为空数据库添加一些处理。

+0

关于“为空数据库添加一些处理”,我该怎么做?如果你能告诉我要写的确切代码,那会更好。 –

+0

如果你有权访问'db.keys'列表(假设它叫做什么,我从来没有使用过ManagerDB),那么添加一个检查if(db.keys.size> 0)'否则将'CursorIndexOutOfBoundsException'加入catch你的try/catch语句块并处理错误 –

+0

对不起,但我无法理解。你能写我如何改变我的代码吗? –

相关问题