- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 android 和 java 的新手。我试图根据一个示例检查我的代码,但在该示例运行良好时,应用程序以某种方式保持强制关闭。我需要帮助!提前致谢!我只是将名称更改为字符串而不是整数。我不知道我是否对 ArrayAdapter 的 HistoryActivity 进行了纠正
日志:
07-31 17:26:56.485: E/ArrayAdapter(20248): You must supply a resource ID for a TextView
07-31 17:26:56.490: D/AndroidRuntime(20248): Shutting down VM
07-31 17:26:56.490: W/dalvikvm(20248): threadid=1: thread exiting with uncaught exception (group=0x40fdb2a0)
07-31 17:26:56.505: E/AndroidRuntime(20248): FATAL EXCEPTION: main
07-31 17:26:56.505: E/AndroidRuntime(20248): java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.AbsListView.obtainView(AbsListView.java:2465)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.ListView.makeAndAddView(ListView.java:1775)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.ListView.fillDown(ListView.java:678)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.ListView.fillFromTop(ListView.java:739)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.ListView.layoutChildren(ListView.java:1628)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.AbsListView.onLayout(AbsListView.java:2300)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.View.layout(View.java:14072)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.ViewGroup.layout(ViewGroup.java:4607)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.View.layout(View.java:14072)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.ViewGroup.layout(ViewGroup.java:4607)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.View.layout(View.java:14072)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.ViewGroup.layout(ViewGroup.java:4607)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.View.layout(View.java:14072)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.ViewGroup.layout(ViewGroup.java:4607)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.View.layout(View.java:14072)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.ViewGroup.layout(ViewGroup.java:4607)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1997)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1818)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1115)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4526)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.Choreographer.doCallbacks(Choreographer.java:555)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.Choreographer.doFrame(Choreographer.java:525)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.os.Handler.handleCallback(Handler.java:615)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.os.Handler.dispatchMessage(Handler.java:92)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.os.Looper.loop(Looper.java:137)
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.app.ActivityThread.main(ActivityThread.java:4921)
07-31 17:26:56.505: E/AndroidRuntime(20248): at java.lang.reflect.Method.invokeNative(Native Method)
07-31 17:26:56.505: E/AndroidRuntime(20248): at java.lang.reflect.Method.invoke(Method.java:511)
07-31 17:26:56.505: E/AndroidRuntime(20248): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
07-31 17:26:56.505: E/AndroidRuntime(20248): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
07-31 17:26:56.505: E/AndroidRuntime(20248): at dalvik.system.NativeStart.main(Native Method)
07-31 17:26:56.505: E/AndroidRuntime(20248): Caused by: java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView
07-31 17:26:56.505: E/AndroidRuntime(20248): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:379)
07-31 17:26:56.505: E/AndroidRuntime(20248): ... 42 more
联系人.java
package com.Elson.ProjectVersion;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteException;
import android.util.Log;
public class Contacts implements Comparable<Contacts> {
private long id;
private String name;
private int Phone;
private int Email;
private Date date;
private double runningAverage;
public Contacts(String name, int Phone, Date date) {
this.name = name;
this.Phone = Phone;
this.date = date;
}
public Contacts(long id, String name,int Phone) {
this.id=id;
this.Phone=Phone;
this.name= (name);
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public int getPhone() {
return Phone;
}
public void setPhone(int Phone) {
this.Phone = Phone;
}
public String getname() {
return name;
}
public void setname(String name) {
this.name = name;
}
public Date getDate() {
return date;
}
public long getDateEpoch(){
return date.getTime()/1000;
}
public void setDateEpoch(long seconds){
date= new Date (seconds*1000);
}
public void setDate(Date date) {
this.date = date;
}
public void setRunningAverage(double runningAverage) {
this.runningAverage = runningAverage;
}
public boolean equals(Object that){
Contacts bs = (Contacts) that;
return this.date.equals(bs.date);
}
@Override
public String toString() {
String result;
// "ID" + id +" "
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
result = df.format(date) + "" + name + "" + Phone ;
return result;
}
@Override
public int compareTo(Contacts another) {
// TODO Auto-generated method stub
return 0;
}
}
联系人 Activity 应用程序:
package com.Elson.ProjectVersion;
import java.util.ArrayList;
import android.app.Application;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import static com.Elson.ProjectVersion.MyContactSQL.*;
public class EnterContactsActivity extends Activity {
private Button saveButton;
private EditText NameEditText;
private EditText PhoneEditText;
private Button ExitButton;
private EditText EmailEditText;
private TextView date;
private int month;//private within class
private int day;
private int year;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_addcontacts);
setUpViews();
Calendar calendar =Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
Date today = calendar.getTime();
DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
String cs = df.format(today);
date.setText(cs);
}
public void saveClickHandler(View v){
String ContactsScore;
ContactsScore= NameEditText.getText().toString();
String name = String.format(ContactsScore, null);
ContactsScore= PhoneEditText.getText().toString();
int Phone = Integer.parseInt(ContactsScore);
Log.d("EnterContacts" , "I hear the Save Button");
if( isValid(Phone) ) {
Contacts contacts;
Date dateofGames= new GregorianCalendar(year,month,day).getTime();
contacts = new Contacts (name , Phone , dateofGames);
ContactsActivityApplication app = (ContactsActivityApplication) getApplication();
//might be wrong
Log.d("DeBUGGING", "app is this type: " + app.getClass().getName());
//need add the function addBowlingScores
app.addallContacts(contacts);
Toast.makeText(getApplicationContext(), "Your Contact has been Saved!", Toast.LENGTH_SHORT).show();
}
else{
//pop up a dialog that data is invalid
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Invalid Phone Number")
.setMessage("Phone numbers cannot have more than 8 numbers")
.setCancelable(false)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
private boolean isValid(int Phone ) {
if(Phone > 0 && Phone <100000000)
return true;
return false;
// TODO Auto-generated method stub
}
public void handleShowHistoryClick (View v) {
Intent intent = new Intent(this, HistoryActivity.class);
startActivity(intent);
}
private void setUpViews()
{
ExitButton = (Button) findViewById(R.id.BtnExit);
saveButton =(Button) findViewById(R.id.BtnSave);
NameEditText= (EditText) findViewById(R.id.NameEditText);
PhoneEditText= (EditText) findViewById(R.id.PhoneEditText);
EmailEditText= (EditText) findViewById(R.id.EmailEditText);
date = (TextView) findViewById(R.id.DateTextView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.addcontacts, menu);
return true;
}
}
进入联系人 Activity :
package com.Elson.ProjectVersion;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class EnterContactsActivity extends Activity {
private Button saveButton;
private EditText NameEditText;
private EditText PhoneEditText;
private Button ExitButton;
private EditText EmailEditText;
private TextView date;
private int month;//private within class
private int day;
private int year;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_addcontacts);
setUpViews();
Calendar calendar =Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
Date today = calendar.getTime();
DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
String cs = df.format(today);
date.setText(cs);
}
public void saveClickHandler(View v){
String ContactsScore;
ContactsScore= NameEditText.getText().toString();
int name = Integer.parseInt(ContactsScore);
ContactsScore= PhoneEditText.getText().toString();
int Phone = Integer.parseInt(ContactsScore);
ContactsScore = EmailEditText.getText().toString();
int Email = Integer.parseInt(ContactsScore);
Log.d("EnterContacts" , "I hear the Save Button");
if( isValid(name) && isValid(Phone) && isValid(Email) ) {
Contacts contacts;
Date dateofGames= new GregorianCalendar(year,month,day).getTime();
contacts = new Contacts (name , Phone , Email, dateofGames);
ContactsActivityApplication app = (ContactsActivityApplication) getApplication();
//might be wrong
Log.d("DeBUGGING", "app is this type: " + app.getClass().getName());
//need add the function addBowlingScores
app.addallContacts(contacts);
Toast.makeText(getApplicationContext(), "Your Contact has been Saved!", Toast.LENGTH_SHORT).show();
}
else{
//pop up a dialog that data is invalid
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Invalid Phone Number")
.setMessage("Phone numbers cannot have more than 8 numbers")
.setCancelable(false)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
private boolean isValid(int phone) {
if(phone <= 0 && phone >=100000000)
return true;
return false;
// TODO Auto-generated method stub
}
private void setUpViews()
{
ExitButton = (Button) findViewById(R.id.BtnExit);
saveButton =(Button) findViewById(R.id.BtnSave);
NameEditText= (EditText) findViewById(R.id.NameEditText);
PhoneEditText= (EditText) findViewById(R.id.PhoneEditText);
EmailEditText= (EditText) findViewById(R.id.EmailEditText);
date = (TextView) findViewById(R.id.DateTextView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.addcontacts, menu);
return true;
}
}
我的联系人SQL:
package com.Elson.ProjectVersion;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteException;
import android.util.Log;
公共(public)类 MyContactSQL 扩展了 SQLiteOpenHelper {
public static final String DB_NAME ="MyContactSQL.SQLite";
public static final int DB_VERSION = 1;
public static String CONTACT_LIST_TABLE = "ContactListTable";
public static String RECORD_ID ="ID";
public static String NAME = "NAME";
public static String PHONE_NUMBER="PhoneNumber";
public MyContactSQL(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase contactListDB) {
String sqlStatement = "create table " + CONTACT_LIST_TABLE
+ " ("
+ RECORD_ID + " integer primary key autoincrement not null,"
+ NAME + " long,"
+ PHONE_NUMBER +" integer"
+");";
Log.d("Contact Database", sqlStatement);
contactListDB.execSQL(sqlStatement);
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
}
}
历史 Activity :
import java.util.ArrayList;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class HistoryActivity extends ListActivity {
Bundle savedInstanceState;
private ArrayList <Contacts> allContacts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.savedInstanceState = savedInstanceState;
setContentView(R.layout.history_layout);
//get data from the App
ContactsActivityApplication app = (ContactsActivityApplication) getApplication();
allContacts = app.getAllContacts();
//View --- Adapter ------ Data
setListAdapter(
new ArrayAdapter<Contacts> (this, R.layout.history_row,
allContacts
));
ListView listView = this.getListView();
listView.setOnItemClickListener(
new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
verifyDeleteRow(position);
Log.d("DEBUG", "I hear item selected:" + position);
// TODO Auto-generated method stub
}
}
);
}
private void verifyDeleteRow(final int position){
//pop up a dialog to confirm delete row
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Delete this Series?")
.setMessage("Do you want to delete this data?" + allContacts.get(position))
.setCancelable(false)
.setNegativeButton("NO! Leave it there!",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
}
})
.setPositiveButton("Delete",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Contacts toDelete = allContacts.get(position);
ContactsActivityApplication app = (ContactsActivityApplication) getApplication();
app.deleteBowlingScores(toDelete);
// TODO Auto-generated method stub
onCreate(savedInstanceState);
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
最佳答案
您传递给 df.format
的 date
对象为 NULL,这会导致 NullPointerException
public String toString() {
String result;
// "ID" + id +" "
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
result = df.format(date) + "" + name + "" + Phone ;
^^^^^^^^^^^^^^^
date object is null above
return result;
}
您需要对date
实例进行null 检查
if(date != null) {
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
result = df.format(date) + "" + name + "" + Phone ;
}
else {
result = name + "" + Phone ;
}
关于java.lang.RuntimeException : Unable to create application and at android. app.ActivityThread.handleBindApplication(ActivityThread.java:4254),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17966164/
我真的很难弄明白这一点。当我查看 logcat 指向错误的位置时,它指向这一行: throw new RuntimeException(i); 在里面 public void onDetach() {
@Transactional (noRollbackFor=RuntimeException.class) public void methodA (Entity e){ service.met
我正在开发简历应用程序并遇到以下异常 在gradle文件上,我尝试了所有可能的解决方案,使缓存重启无效,并且干净的gradle不起作用 java.lang.RuntimeException:java.
我的项目在 Android Studio 3.0.1 上的 Whatchap 中,这是我的设计 gradle。build.gradle(应用程序) 应用插件:'com.android.applicat
// Top-level build file where you can add configuration options common to all sub-projects/modules.
您好,目前我正在开发包括解析服务器的项目,并且在将解析库添加到我的项目后,当我运行它时,它显示此错误,任务“:app:checkDebugDuplicateClasses”执行失败。 Exec
我找到了 another post显示我们如何创建我们自己的检查异常,它也返回不同于 500 的 HTTP 状态代码。但是,我需要它是一个 RuntimeException。然后,我找到了WebApp
我尝试在 7.40 系统上演示具有动态方法名称的 CALL METHOD 语句。我使用下面的测试代码,在第 27 行得到一个 ABAP 运行时错误。异常描述中的错误分析状态 ... 在类 LCL 中,
我的ViewModel类抛出了RunTimeException。它基本上不能创建ViewModel类的实例。这是堆栈跟踪: 2019-05-29 01:27:56.700 9698-9698/com.
我安装了Hive 0.9.0,运行它时出现错误: ./hive Logging initialized using configuration in jar:file:/usr/lib/hive-0.
当我尝试在 android 4.1.1(galaxy nexus)上运行 opencv(2.4.2) sample3时。我收到RuntimeException。 Logcat指向此处:(android
Java中除了RuntimeException之外还有其他可能发生的异常吗?谢谢。 最佳答案 是的,有三种种。 检查异常 编译器会让您知道何时可以抛出它们,很可能是由于环境中的故障。 如果程序可以
这个问题已经有答案了: Why runtime exception is unchecked exception? (5 个回答) 已关闭 7 年前。 我知道受检查的异常继承自 Exception并且
这里发生了什么? 为什么 IOException (RemoteException) 的检查子级会转换为 RuntimeException? 摘自here的片段 import java.rmi.Rem
源代码(osmand)没有错误 我使用了 eclipse 和 sdk 模拟器 2.2,从 googlecode checkout (osmand应用程序) 我的代码: public void onCr
我开始研究线程,我不明白为什么下面的简单代码不起作用。它正在抛出: RuntimeException: can't create handler inside thread that has not
我想为自己破例。但是当我抛出异常时,程序就关闭了。那么我怎样才能运行我的方法3次然后关闭程序呢? (我的程序在intArray之后关闭,但我想遍历dobleArray和charArray) 这是我的异
我有一个扩展 HttpServlet 的类包含以下两个方法。当客户端向 Tomcat 服务器上运行的 Web 应用程序发出请求时,http 请求将通过此类处理,但是如果 doSomething 方法抛
在很多地方,我都会遇到几个检查异常,例如 IOException、ParseException、JSONException 等。我必须做出两个选择 - 通过在方法签名末尾添加 throws 来引发相同
RuntimeExceptions 应该指示编程错误,我希望我的应用程序在我的可观察对象中的某些东西抛出 RuntimeException 时崩溃。 最好的方法是什么?现在我正在考虑这个解决方案(它是
我是一名优秀的程序员,十分优秀!