Java 应用程序在发布时崩溃
下面是一个简单SQLite示例的主要活动。应用程序在启动时崩溃。以下是错误(粗体): 以下是Main活动的代码:Java 应用程序在发布时崩溃,java,android,Java,Android,下面是一个简单SQLite示例的主要活动。应用程序在启动时崩溃。以下是错误(粗体): 以下是Main活动的代码: package com.mytestfyp.ahmed.database; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.support.v7.app.AppCompatActivity; im
package com.mytestfyp.ahmed.database;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity
{
Button btnAddNewRecord;
SQLiteHelper sQLiteHelper;
android.widget.LinearLayout parentLayout;
LinearLayout layoutDisplayPeople;
TextView tvNoRecordsFound;
private String rowID = null;
private ArrayList<HashMap<String, String>> tableData = new ArrayList<HashMap<String, String>>();
private class Holder
{
TextView tvFullName;
String name;
String age;
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getAllWidgets();
sQLiteHelper = new SQLiteHelper(MainActivity.this);
bindWidgetsWithEvent();
displayAllRecords();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK)
{
//firstname & lastname
String name = data.getStringExtra(Constants.NAME);
String age = data.getStringExtra(Constants.AGE);
ContactModel contact = new ContactModel();
contact.setName(name);
contact.setAge(age);
if (requestCode == Constants.ADD_RECORD)
{
sQLiteHelper.insertRecord(contact);
}
else if (requestCode == Constants.UPDATE_RECORD)
{
contact.setID(rowID);
sQLiteHelper.updateRecord(contact);
}
displayAllRecords();
}
}
private void getAllWidgets()
{
btnAddNewRecord = (Button) findViewById(R.id.btnAddNewRecord);
parentLayout = (LinearLayout) findViewById(R.id.parentLayout);
tvNoRecordsFound = (TextView) findViewById(R.id.tvNoRecordsFound);
}
private void bindWidgetsWithEvent()
{
btnAddNewRecord.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
onAddRecord();
}
});
}
private void onAddRecord()
{
Intent intent = new Intent(MainActivity.this, TableManipulationActivity.class);
intent.putExtra(Constants.DML_TYPE, Constants.ADD_RECORD);
startActivityForResult(intent, Constants.ADD_RECORD);
}
private void onUpdateRecord(String name, String age)
{
Intent intent = new Intent(MainActivity.this, TableManipulationActivity.class);
intent.putExtra(Constants.NAME, name);
intent.putExtra(Constants.AGE, age);
intent.putExtra(Constants.DML_TYPE, Constants.UPDATE);
startActivityForResult(intent, Constants.UPDATE_RECORD);
}
private void displayAllRecords()
{
LinearLayout inflateParentView;
parentLayout.removeAllViews();
ArrayList<ContactModel> contacts = sQLiteHelper.getAllRecords();
if (contacts.size() > 0)
{
tvNoRecordsFound.setVisibility(View.GONE);
ContactModel contactModel;
for (int i = 0; i < contacts.size(); i++)
{
contactModel = contacts.get(i);
final Holder holder = new Holder();
final View view = LayoutInflater.from(this).inflate(R.layout.inflate_record, null);
inflateParentView = (LinearLayout) findViewById(R.id.inflateParentView);
holder.tvFullName = (TextView) view.findViewById(R.id.tvFullName);
view.setTag(contactModel.getID());
holder.name = contactModel.getName();
holder.age = contactModel.getAge();
String personData = holder.name + " " +holder.age;
holder.tvFullName.setText(personData);
final CharSequence[] items = {Constants.UPDATE, Constants.DELETE};
inflateParentView.setOnLongClickListener(new View.OnLongClickListener()
{
@Override
public boolean onLongClick(View v)
{
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setItems(items, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
if (which == 0)
{
rowID = view.getTag().toString();
onUpdateRecord(holder.name, holder.age);
}
else
{
AlertDialog.Builder deleteDialogOK = new AlertDialog.Builder(MainActivity.this);
deleteDialogOK.setTitle("Delete Person ?");
deleteDialogOK.setPositiveButton("OK", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
ContactModel contact = new ContactModel();
contact.setID(view.getTag().toString());
sQLiteHelper.deleteRecord(contact);
displayAllRecords();
}
});
deleteDialogOK.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
}
});
deleteDialogOK.show();
}
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
return true;
}
});
parentLayout.addView(view);
}
}
else
{
tvNoRecordsFound.setVisibility(View.VISIBLE);
}
}
}
package com.mytestfyp.ahmed.database;
导入android.app.AlertDialog;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.widget.Button;
导入android.widget.LinearLayout;
导入android.widget.TextView;
导入java.util.ArrayList;
导入java.util.HashMap;
公共类MainActivity扩展了AppCompatActivity
{
按钮btnAddNewRecord;
SQLiteHelper SQLiteHelper;
android.widget.linearlayoutparentlayout;
线性布局布局显示人员;
文本视图tvNoRecordsFound;
私有字符串rowID=null;
私有ArrayList tableData=新ArrayList();
私人阶级持有者
{
TextView-tvFullName;
字符串名;
弦年龄;
}
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getAllWidgets();
sQLiteHelper=新的sQLiteHelper(MainActivity.this);
bindWidgetsWithEvent();
显示所有记录();
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据)
{
super.onActivityResult(请求代码、结果代码、数据);
if(resultCode==RESULT\u OK)
{
//名与姓
字符串名称=data.getStringExtra(Constants.name);
字符串年龄=data.getStringExtra(Constants.age);
ContactModel contact=新ContactModel();
contact.setName(name);
接触设置(年龄);
if(requestCode==Constants.ADD_记录)
{
sQLiteHelper.insertRecord(contact);
}
else if(requestCode==Constants.UPDATE_记录)
{
contact.setID(rowID);
sQLiteHelper.updateRecord(联系人);
}
显示所有记录();
}
}
私有void getAllWidgets()
{
btnAddNewRecord=(按钮)findViewById(R.id.btnAddNewRecord);
parentLayout=(LinearLayout)findViewById(R.id.parentLayout);
tvNoRecordsFound=(TextView)findViewById(R.id.tvNoRecordsFound);
}
私有void bindwigetswithevent()
{
btnAddNewRecord.setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图v)
{
OnAddressRecord();
}
});
}
私有无效OnAddressRecord()
{
意向意向=新意向(MainActivity.this、TableOperationActivity.class);
intent.putExtra(Constants.DML_类型,Constants.ADD_记录);
startActivityForResult(意图、常数、添加记录);
}
私有void onUpdateRecord(字符串名称、字符串期限)
{
意向意向=新意向(MainActivity.this、TableOperationActivity.class);
intent.putExtra(Constants.NAME,NAME);
intent.putExtra(常数、年龄、年龄);
intent.putExtra(Constants.DML_类型,Constants.UPDATE);
startActivityForResult(意图、常数、更新记录);
}
私有void displayAllRecords()
{
线性布局充气式ParentView;
parentLayout.removeallview();
ArrayList contacts=sQLiteHelper.getAllRecords();
如果(contacts.size()>0)
{
tvNoRecordsFound.setVisibility(View.GONE);
接触模型;
对于(int i=0;ipackage com.mytestfyp.ahmed.database;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity
{
Button btnAddNewRecord;
SQLiteHelper sQLiteHelper;
android.widget.LinearLayout parentLayout;
LinearLayout layoutDisplayPeople;
TextView tvNoRecordsFound;
private String rowID = null;
private ArrayList<HashMap<String, String>> tableData = new ArrayList<HashMap<String, String>>();
private class Holder
{
TextView tvFullName;
String name;
String age;
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getAllWidgets();
sQLiteHelper = new SQLiteHelper(MainActivity.this);
bindWidgetsWithEvent();
displayAllRecords();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK)
{
//firstname & lastname
String name = data.getStringExtra(Constants.NAME);
String age = data.getStringExtra(Constants.AGE);
ContactModel contact = new ContactModel();
contact.setName(name);
contact.setAge(age);
if (requestCode == Constants.ADD_RECORD)
{
sQLiteHelper.insertRecord(contact);
}
else if (requestCode == Constants.UPDATE_RECORD)
{
contact.setID(rowID);
sQLiteHelper.updateRecord(contact);
}
displayAllRecords();
}
}
private void getAllWidgets()
{
btnAddNewRecord = (Button) findViewById(R.id.btnAddNewRecord);
parentLayout = (LinearLayout) findViewById(R.id.parentLayout);
tvNoRecordsFound = (TextView) findViewById(R.id.tvNoRecordsFound);
}
private void bindWidgetsWithEvent()
{
btnAddNewRecord.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
onAddRecord();
}
});
}
private void onAddRecord()
{
Intent intent = new Intent(MainActivity.this, TableManipulationActivity.class);
intent.putExtra(Constants.DML_TYPE, Constants.ADD_RECORD);
startActivityForResult(intent, Constants.ADD_RECORD);
}
private void onUpdateRecord(String name, String age)
{
Intent intent = new Intent(MainActivity.this, TableManipulationActivity.class);
intent.putExtra(Constants.NAME, name);
intent.putExtra(Constants.AGE, age);
intent.putExtra(Constants.DML_TYPE, Constants.UPDATE);
startActivityForResult(intent, Constants.UPDATE_RECORD);
}
private void displayAllRecords()
{
LinearLayout inflateParentView;
parentLayout.removeAllViews();
ArrayList<ContactModel> contacts = sQLiteHelper.getAllRecords();
if (contacts.size() > 0)
{
tvNoRecordsFound.setVisibility(View.GONE);
ContactModel contactModel;
for (int i = 0; i < contacts.size(); i++)
{
contactModel = contacts.get(i);
final Holder holder = new Holder();
final View view = LayoutInflater.from(this).inflate(R.layout.inflate_record, null);
inflateParentView = (LinearLayout) findViewById(R.id.inflateParentView);
holder.tvFullName = (TextView) view.findViewById(R.id.tvFullName);
view.setTag(contactModel.getID());
holder.name = contactModel.getName();
holder.age = contactModel.getAge();
String personData = holder.name + " " +holder.age;
holder.tvFullName.setText(personData);
final CharSequence[] items = {Constants.UPDATE, Constants.DELETE};
inflateParentView.setOnLongClickListener(new View.OnLongClickListener()
{
@Override
public boolean onLongClick(View v)
{
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setItems(items, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
if (which == 0)
{
rowID = view.getTag().toString();
onUpdateRecord(holder.name, holder.age);
}
else
{
AlertDialog.Builder deleteDialogOK = new AlertDialog.Builder(MainActivity.this);
deleteDialogOK.setTitle("Delete Person ?");
deleteDialogOK.setPositiveButton("OK", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
ContactModel contact = new ContactModel();
contact.setID(view.getTag().toString());
sQLiteHelper.deleteRecord(contact);
displayAllRecords();
}
});
deleteDialogOK.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
}
});
deleteDialogOK.show();
}
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
return true;
}
});
parentLayout.addView(view);
}
}
else
{
tvNoRecordsFound.setVisibility(View.VISIBLE);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
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">
<ScrollView
android:id="@+id/scrollViewDisplay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layoutDisplayPeople"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/people"
android:textColor="@color/color_black"
android:textSize="25sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvNoRecordsFound"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:layout_marginTop="15dp"
android:gravity="center"
android:text="@string/nrf"
android:textColor="@color/color_black"
android:textSize="15sp" />
<LinearLayout
android:id="@+id/parentLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
<Button
android:id="@+id/btnAddNewRecord"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/color_blue"
android:text="@string/add"
android:textColor="@color/color_white"
android:textStyle="bold" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal">
<LinearLayout
android:id="@+id/inflateParentView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
<TextView
android:id="@+id/tvFullName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:layout_marginTop="15dp"
android:layout_marginStart="15dp"
android:layout_weight="1"
android:text="@string/name"
android:textSize="15sp"
android:gravity="start"
android:textColor="@color/color_black"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@color/color_grey"/>
</LinearLayout>
inflateParentView = (LinearLayout) findViewById(R.id.inflateParentView);
inflateParentView = (LinearLayout) view.findViewById(R.id.inflateParentView);