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:在可扩展列表视图中显示数据库中的记录 的相关文章

  • 具有自动删除项目的 WPF 列表框

    我正在尝试设置一个列表框 用户可以通过单击他们想要删除的每个值来删除项目 我为列表框设置了样式 DisplayName 是项目类的成员 以便为每个项目包含一个按钮
  • 如何使用 WifiEnterpriseConfig 设置“使用系统证书”

    我想为我的应用程序的用户配置企业 WiFi 网络 因此 用户必须输入用户名和密码 其余的由应用程序处理 身份验证由 RADIUS 服务器 FreeRadius 3 处理 该服务器使用 LetsEncrypt 颁发的证书 因此无需导入我自己的
  • PopupWindow onitemclick 中的 Android Listview 在某些设备上不起作用

    我的 ListView 在 PopupWindow 内 当我显示 PopupWindow 并单击设备 ASUS K00z 中的 Listview 行时 fonepad 工作得很好 但在 HTC Z715e 中不起作用 项目单击事件未触发 1
  • 在Java中测试服务器是否启动的正确方法?

    简单地查看是否可以建立与网站 服务器的连接的正确方法是什么 我想要这个用于我正在编码的应用程序 如果我的网站离线 它只会提醒我 Thanks 您可以使用 HttpURLConnection 发送请求并检查响应正文中是否有该页面特有的文本 而
  • 当前版本的Android Gradle插件不支持按需配置

    升级到 Android Studio 3 1 2 后 出现以下错误 当前版本的 Android Gradle 插件不支持按需配置 因为您使用的是 Gradle 4 6 或更高版本 建议 通过在 gradle properties 文件中设置
  • Android:如何让设备只运行一个应用程序?

    我有一个客户项目 我必须制作单任务 Android 设备 客户无法逃脱我公司开发的应用程序 此外 客户无法启动任何其他应用程序 而我们的应用程序会在设备启动时启动 总体而言 客户能够使用设备执行的所有操作就是运行我们的应用程序 除了 roo
  • 地理编码 API 与地理编码器

    在我的应用程序中 我需要使用地理编码 但我不太清楚该使用哪种方法 直到昨天我在URL中添加了参数maps googleapis com maps api geocode json address myparameter sensor fal
  • 有人可以给出一个 android 中 webview 实现的确切例子吗

    嗨 我正在使用开发 Android 应用程序WebView执行 我跟着官方安卓教程 http developer android com resources tutorials views hello webview html 在 Ecli
  • 作为附件的 Android 设备

    我有 2 个 Android 设备 我想用 USB OTG 电缆连接它们 并在两个设备之间进行来回通信 据我了解 一台 Android 设备将充当 USB 主机 运行 4 4 的 Nexus 7 另一台 Android 设备将充当 USB
  • 如何在 Android Studio 中构建项目测试目录?

    目前还没有这方面的约定 但是现在我如何构建 Android Studio 的测试目录呢 Android 测试基础 http developer android com tools testing testing android html页面
  • 如何为 flutter 绘图应用实现橡皮擦功能

    有一个关于通过 flutter 创建绘图应用程序的视频 YouTube https www youtube com watch v yyHhloFMNNA 它支持当用户点击屏幕时绘制线 点 但我找不到像 Android 本机那样擦除用户绘制
  • 如何关闭导航抽屉以使用返回主页图标按钮?

    我也将操作栏与搜索栏一起使用 并且我需要像后退按钮一样使用 ActionBar ico 但我也在使用导航抽屉 如何关闭 隐藏 禁用导航抽屉菜单以使用后退按钮 我的 ActionBar 代码 Override public boolean o
  • Android 10 请求 ACTIVITY_RECOGNITION 权限

    我试图遵守 Google 的要求 为 Android 10 请求 ACTIVITY RECOGNITION 权限 但我似乎不明白为什么没有显示权限弹出窗口 就像其他权限 即位置 存储等 一样 我的代码是 if ContextCompat c
  • 推特更新状态

    我正在通过 twitter4j 将 Twitter 集成到 Android 我可以成功阅读我发布的推文 现在我试图用它发布推文 但我不能 我收到如下奇怪的警告 02 01 16 28 43 298 WARN System err 729 4
  • 可用屏幕的尺寸

    我使用的是 Nexus 7 1280x800 android 4 2 2 API 17 我想获取屏幕的大小 将其划分为相同高度和宽度的正方形部分 我正在使用 FrameLayout 我的方块是 ImageView 的子类 我这样做 cont
  • 我有一个仅显示图标和标题的列表 无 JQM 格式 如果屏幕宽度低于 320 px 我想将列表转换为 JQM ul list 我可以通过 Jquery 添加属性 但是当我调用 menuList listview refresh 时我收到以下错
  • 如何检测日期选择器对话框的取消单击?

    我正在使用以下 日期选择器的示例 http developer android com guide tutorials views hello datepicker html http developer android com guide
  • Android Studio 中自动打开“运行设备”选项卡

    在 Android Studio Flamingo 中有一个名为跑步设备并且它会在每次之后自动打开运行应用程序 有办法禁止这个自动打开吗 我尝试禁用启用物理 Android 设备的镜像选项 但选项卡仍然自动打开 基于此issue https
  • Android - 如何简单地拖放按钮?

    我在这里找到了一个适合初学者的教程 http androidrox wordpress com 2011 05 13 android sample app drag and drop image using touch http andro
  • Android Google 地图无法在当前主题中找到样式“mapViewStyle”

    添加谷歌地图视图时 我扩展了MapView 使用xml编辑器将其添加到活动中 并将我的谷歌地图api密钥手动添加到布局xml文件中 我的权限在清单文件中允许互联网 我想知道的是 在 xml 编辑器中 我收到错误 无法在当前主题中找到样式 m

随机推荐