java.lang.NullPointerException:在可扩展列表视图中显示数据库中的记录

2023-12-14

正如问题所示,我需要显示数据库中的记录,每个孩子的记录不同。即, 子1=记录1个数据。 child 2 =记录2数据.so等等。 我想出了以下显示代码:

package com.example.moolah;

import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.View;
import android.widget.Button;

public class DisplayActivity extends ListActivity {
DBAdapter db=new DBAdapter(this);


@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_cursor); 

    Button viewbutton=(Button)findViewById(R.id.button2);
 //    viewbutton.setOnClickListener(new Buttonx());


}

public class Buttonx extends DisplayActivity implements Button.OnClickListener{
 @SuppressWarnings("deprecation")
  @Override
    public void onClick(View v)
    { 


Button viewbutton=(Button)v.findViewById(R.id.button2);
        Object viewid=viewbutton.getTag();
            int i=Integer.parseInt(viewid.toString());          
MyCustomAdapter c=new MyCustomAdapter();
            long id=c.getChildId(0,i);
        //DisplayCursor d;
            //d.filldata();                
         db.open();
           // View view;
           Cursor cursor = db.getRecord(id);
           startManagingCursor(cursor);

            String[] columns = new String[] {DBAdapter.invest_type,DBAdapter.curr_per_share_price, DBAdapter.share_name,
                    DBAdapter.no_of_shares,DBAdapter.share_identity,DBAdapter.purchase_price,
                    DBAdapter.purchase_from,DBAdapter.purchase_date,DBAdapter.purchase_contact};

            int[] to = new int[] { R.id.investmenttype,R.id.currpershareprice,R.id.sharename,R.id.shareno,R.id.shareid, R.id.purprice,
                    R.id.purfrom,R.id.purdate,R.id.purcon};
            SimpleCursorAdapter mAdapter = new SimpleCursorAdapter( this, R.layout.row, cursor, columns, to);
            this.setListAdapter(mAdapter);


           db.close();
    } 
}   

尽管我的数据库有数据,但使用命令提示符 adb shell 确认,这会以文本形式显示“无数据”。 所以我假设它无法访问 onClick 方法。 现在,如果我取消注释 onCreate 方法中注释的行,它将获得访问权限,但会导致 NullPointerException viewbutton.setOnClickListener(new Buttonx());//onCreate方法

如何在不生成此异常的情况下访问 onClick 并根据需要显示记录? 我想我在某个地方犯了根本性的错误。如果有人能指出这个缺陷,我将不胜感激。你看,这件事让我发疯。:/

LOGCAT:

     06-17 17:33:32.444: E/AndroidRuntime(569):
     FATAL EXCEPTION: main
     06-17 17:33:32.444: E/AndroidRuntime(569): java.lang.RuntimeException: Unable to start activity      ComponentInfo{com.example.moolah/com.example.moolah.DisplayActivity}: java.lang.NullPointerException
   06-17 17:33:32.444: E/AndroidRuntime(569):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
   06-17 17:33:32.444: E/AndroidRuntime(569):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
   06-17 17:33:32.444: E/AndroidRuntime(569):   at android.app.ActivityThread.access$600(ActivityThread.java:122)
   06-17 17:33:32.444: E/AndroidRuntime(569):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
   06-17 17:33:32.444: E/AndroidRuntime(569):   at android.os.Handler.dispatchMessage(Handler.java:99)
   06-17 17:33:32.444: E/AndroidRuntime(569):   at android.os.Looper.loop(Looper.java:137)
   06-17 17:33:32.444: E/AndroidRuntime(569):   at android.app.ActivityThread.main(ActivityThread.java:4340)
   06-17 17:33:32.444: E/AndroidRuntime(569):   at java.lang.reflect.Method.invokeNative(Native Method)
   06-17 17:33:32.444: E/AndroidRuntime(569):   at java.lang.reflect.Method.invoke(Method.java:511)
   06-17 17:33:32.444: E/AndroidRuntime(569):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    06-17 17:33:32.444: E/AndroidRuntime(569):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    06-17 17:33:32.444: E/AndroidRuntime(569):  at dalvik.system.NativeStart.main(Native Method)        
    06-17 17:33:32.444: E/AndroidRuntime(569): Caused by: java.lang.NullPointerException
    06-17 17:33:32.444: E/AndroidRuntime(569):  at com.example.moolah.DisplayActivity.onCreate(DisplayActivity.java:21)
    06-17 17:33:32.444: E/AndroidRuntime(569):  at android.app.Activity.performCreate(Activity.java:4465)
    06-17 17:33:32.444: E/AndroidRuntime(569):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
    06-17 17:33:32.444: E/AndroidRuntime(569):  at             android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
    06-17 17:33:32.444: E/AndroidRuntime(569):  ... 11 more

应该像下面这样。另请发布堆栈跟踪,以便我们可以进一步帮助您

public class DisplayActivity extends ListActivity {
DBAdapter db;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_cursor); 
 db=new DBAdapter(this);  
Button viewbutton=(Button)findViewById(R.id.button2);
viewbutton.setOnClickListener(new OnClickListener()
{
       @override
       public void onClick(View v)
       {
             // do something
       }   

});
}

Edit:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

  <ListView 
android:layout_height="wrap_content" 
android:layout_above="@+id/button1"
android:layout_width="fill_parent" 
android:id="@+id/lv" />

  <Button
      android:id="@+id/button1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentBottom="true"
      android:layout_centerHorizontal="true"
      android:text="Button" />

</RelativeLayout>

MainActivity.java

public class MainActivity extends Activity {

    ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button b = (Button) findViewById(R.id.button1);
        lv= (ListView) findViewById(R.id.lv);
        b.setOnClickListener(new OnClickListener()
        {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                // set your adapter to listview here
            }

        });
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.lang.NullPointerException:在可扩展列表视图中显示数据库中的记录 的相关文章

  • Flutter :已处置的 CameraController,在已处置的 CameraController 上调用了 buildPreview()

    如何正确初始化和处理相机控制器 我在用camera 0 9 4 5 与许多人一起 其他错误 https stackoverflow com questions 70592464 flutter change the path of reco
  • 在根项目“bin”中找不到任务“bintrayUpload”

    我遵循了将 AAR 文件发布到 JCenter 所需的每个步骤 然后使用 Maven Central 将其同步https github com danielemaddaluno gradle jcenter publish https gi
  • 使用 JSONArray 还是普通数组来存储/读取数据更有效?

    我正在使用一个连接到PHP MySQL返回所有内容的服务器JSON格式 例如 用户列表作为JSONArray of JSONObject 每个对象都包含单个用户的信息 姓名 位置 电话号码等 处理这种格式的信息时 将所有内容保留在其中会更有
  • 在 Android 上使用 AT 命令与调制解调器对话

    我试图与三星 Galaxy s2 plus 和华为 p1 xl u9200 调制解调器发送 AT 命令 但无法得到任何结果 我使用 adb shell 发送命令并使用 logcat 查看日志 在三星 当我执行 cat 时 proc tty
  • 如何通过我的活动在 Android 中设置铃声?

    我正在尝试找到一种方法来通过 Android 活动中的代码设置新的默认铃声 我已经将铃声下载到bytearray 最后 我设法将默认铃声设置为我下载的铃声 下面不包含下载代码 仅包含将其设置为默认铃声所需的代码 File k new Fil
  • 当路径的点超出视野时,Android Canvas 不会绘制路径

    我在绘制路径时遇到了 Android Canvas 的一些问题 我的情况是 我有一个相对布局工作 如地图视图 不使用 google api 或类似的东西 我必须在该视图上绘制一条路径 canvas drawPath polyPath bor
  • 覆盖 Android 中的电源按钮

    我正在开发一个应用程序 其中我需要在按下电源按钮时执行一个操作 但不幸的是我无法处理按下电源按钮时的操作 我尝试使用 onKeyDown 和dispatchKeyEvent 方法 但似乎没有任何效果 任何人都可以建议我解决这个问题的任何其他
  • Android 全屏对话框确认和拒绝操作

    材料设计中的全屏对话框应该在操作栏 工具栏上有确认和拒绝操作 我的问题是 我该怎么做 显示对话框 getFragmentManager beginTransaction add R id container new MyDialogFrag
  • ADB TCPIP 连接问题

    我有两台 Galaxy S3 其中一个已扎根 另一个则未扎根 因此 当我尝试通过本地网络连接它们时 计算机可以看到已root的计算机 但是正常的就卡在tcpip这一步了 所以 我写 adb tcpip 5555 It says restar
  • ExpandableListview OnGroupClickListener 未触发

    我正在关注这个 以编程方式折叠 ExpandableListView 中的组 https stackoverflow com questions 4314777 programmatically collapse a group in ex
  • 透明 9patch 图像:显示出线条

    我得到了一个透明的 9 补丁图像 其中有 9 条补丁线显示槽 This is the output 显然我不希望水平线可见 这就是我创建 9patch 的方式 This is the final image that is used in
  • 选项卡主机内的 Android Fragment 视图状态 [重复]

    这个问题在这里已经有答案了 可能的重复 使用 Fragment 为 Android 中的每个选项卡单独的返回堆栈 https stackoverflow com questions 6987334 separate back stack f
  • MIUI 权限被拒绝活动 KeyguardLocked

    当应用程序处于后台且屏幕被锁定时 我无法启动活动 没有异常或警告 只是不调用 onCreate 我一直在与这个问题作斗争 我想我终于找到了它的根源 日志中有一行 D com android server am ExtraActivityMa
  • 控制 OverlayItem 大小

    我正在构建一个在单个 ItemizedOverlay 中包含几十个 OverlayItems 的地图 我的地图设计为可以非常近距离地查看 大约缩放级别 18 并且 OverlayItems 彼此非常接近 地图放大时看起来不错 但是 如果用户
  • 如何使用 SharedPreferences 保存多个值?

    我正在开发一个字典应用程序 在我的应用程序中 我假设用户想要保存最喜欢的单词 我决定使用共享首选项保存这些值 我知道 SQLite 和文件更好 但我坚持使用 SharedPreferences 所以继续使用它 下面是我的代码 Overrid
  • 当 minifyEnabled 为 true 时 Android 应用程序崩溃

    我正在使用多模块应用程序 并且该应用程序崩溃时minifyEnabled true in the installed模块的build gradle 以下是从游戏控制台检索到的反混淆堆栈跟踪 FATAL EXCEPTION Controlle
  • Android 中的 OpenGL 缩小

    我正在使用 3D 对象并渲染它并通过扩展 GLSurfaceView 实现渲染器来显示它 问题是如何通过捏合和捏合进行缩小 下面是我的班级 package com example objLoader import java nio Byte
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • 如何在android中通过蓝牙向配对设备发送短信?

    在我的应用程序中 我想通过蓝牙发送和接收短信 我可以在列表视图中看到配对设备名称和地址的列表 但是当我尝试向配对设备发送文本时 什么也没有发生 在其他设备中没有收到文本 这是我向配对设备发送消息的代码 private void sendDa
  • Android GetPTLAFormat 上的 Phonegap 错误

    我们正在开发一个使用 jQuery 移动和电话间隙的应用程序 一切似乎都工作正常 但是当在连接的 Android 手机上运行应用程序时 我们在 Eclipse logcat 中看到大量类似这样的错误 0 GetPTLAFormat inva

随机推荐