- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 SQLite 制作一个简单的笔记应用程序。它有两个 Activity 和一个 SQLite 帮助程序类。但是,当我单击 MainActivity.java
中的示例注释(Akhilesh Chobey)时,并尝试在 Main2Activity.java
中编辑它应用程序崩溃。
主要 Activity :
public class MainActivity extends AppCompatActivity {
ListView notesListView;
static ArrayList<String> notesArrayList;
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
notesListView = (ListView) findViewById(R.id.notesListView);
notesArrayList = new ArrayList<String>();
notesArrayList.add("Akhilesh Chobey");
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, notesArrayList);
notesListView.setAdapter(adapter);
notesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(getApplicationContext(), Main2Activity.class);
intent.putExtra("notePosition", i);
startActivity(intent);
}
});
}
}
Main2Activity:
public class Main2Activity extends AppCompatActivity implements TextWatcher {
DatabaseOperations myDB;
EditText editNote;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
editNote = (EditText) findViewById(R.id.noteEditText);
myDb = new DatabaseOperations(Main2Activity.this);
Intent intent = getIntent();
int position = intent.getIntExtra("notePosition", -1);
if(position != -1){
editNote.setText(MainActivity.notesArrayList.get(position));
}
editNote.addTextChangedListener(this);
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (myDB == null){
boolean isInserted = myDB.insertData(editNote.getText().toString());
if(isInserted){
Toast.makeText(getApplicationContext(), "Inserted", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show();
}
}
}
帮助类:
public class DatabaseOperations extends SQLiteOpenHelper {
public static final String DatabaseName = "notes.db";
public static final String TableName = "notes";
public static final String Col1 = "text";
public DatabaseOperations(Context context) {
super(context, DatabaseName, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TableName + " (text TEXT PRIMARY KEY AUTOINCREMENT) ");
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("DROP TABLE IF EXISTS " + TableName);
onCreate(db);
}
public boolean insertData(String note){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(Col1, note);
long result = db.insert(TableName, null, contentValues);
if(result == -1){
return false;
}else {
return true;
}
}
}
日志:
06-29 17:23:34.996 2231-2231/com.akhileshchobey.mynotes E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.akhileshchobey.mynotes, PID: 2231
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.akhileshchobey.mynotes.DatabaseOperations.insertData(java.lang.String)' on a null object reference
at com.akhileshchobey.mynotes.Main2Activity.onTextChanged(Main2Activity.java:39)
at android.widget.TextView.sendOnTextChanged(TextView.java:7746)
at android.widget.TextView.handleTextChanged(TextView.java:7806)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:9724)
at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:964)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:515)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:454)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:33)
at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:685)
at android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:445)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:340)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:78)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5264)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:695)
最佳答案
不初始化myDb = null;
,
在 Main2Activity
的 onCreate()
中像这样初始化 myDb
myDb = new DatabaseOperations(Main2Activity.this);
编辑
您现在已经初始化了您的myDb
,并且它不会为空。因此,您必须在 onTextChanged()
方法中进行如下更改。
if (myDB == null)
到
if (myDB != null)
关于java - 应用程序在 onTextChanged() 期间崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38097128/
我试图动态保存具有不同颜色的编辑文本,但是当我通过将其转换为 HTML 形式来保存它时,它仅以一种颜色保存文本,而不是以我选择的颜色保存文本。 这里是Textchanged,str是可跨越的文本。 t
我正在尝试构建一个小费计算。这是我的代码的一部分: public void onTextChanged(CharSequence s, int start, int before, int count
我有一个网络表单页面,但我遇到了问题。 当我在点击保存之前对其进行测试时。一切都按预期工作。但是,一旦我清除了 lblEstNo 文本框中的文本,我就会收到错误消息,指出它是必需的。因此,我在文本框中
嘿伙计们,我需要我的搜索功能来充当联系人。我正在从服务器检索我的参与者列表,并在用户搜索以获取结果时重建它。 Hoover 我只能在他们输入全名时让它工作。让我给你看我的代码。我尝试了很多组合。任何想
我有一个 TextField,它的文本可以由人或我程序上的函数编辑。有办法识别哪个是来源吗? 现在我正在使用“onTextChanged”,但我需要将人工输入与其他输入分开。谢谢。 最佳答案 让你的文
我强制关闭,但仅在某些情况下和某些设备上,onTextChanged。这是我写的: public void onTextChanged(CharSequence cs, int arg1, int
我需要这样的东西,当用户在 editText 部分输入数字时,数字总数的模应该同时显示在屏幕上。所以我使用了 onTextChanged ,我将字符转换为 int 并将此值设置为 a TextView
我尝试使用 EditText 实现搜索。每当在 EditText 请求中键入文本时,都会在 onTextChanged() 方法中发送键入的文本。当我更改手机的方向并显示结果时,onTextChang
我写了下面的代码来弄清楚 onTextChanged() 方法是如何工作的: override fun onTextChanged(string: CharSequence?, start: Int,
我的 .Aspx 页面中有一个 TextBox: 隐藏代码: protected void txtCity_TextChanged(object sender
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 7 年前。 我正在使用 SQLite 制作一
我正在使用以下代码来验证电子邮件输入 private boolean validateEmail(String email) { String emailPattern = "^[
当我们选择预测(例如 Do->Doc->Document)时,如何调用 start、before 和 count 值。它有时会删除单词并通过 2 次调用再次插入,有时在同一次调用中。 请指教。 最佳答
我有一个 asp 文本框,我已将其连接到文档上的 jQuery 日历控件,如下所示 $('#txtPromoPrcStrt').datepick({ dateFormat: 'mm/dd/yyy
我的 wpf 应用程序中有以下绑定(bind) xaml: c#(代码隐藏): public partial class MainWindow : Window, INotifyPropert
public class MainActivity extends ActionBarActivity { AutoCompleteTextView autoCompleteTextView; Str
(我正在学习英语...因此,请原谅我) 我正在制作一个转换 bin、dec 和 hex 的应用程序。我有三个 EditText(数字类型),我想在其中一个树内容发生变化时做一些事情。 我的三个Edit
我正在使用 asp:textbox 并且它正在触发 ontextchanged 事件,在那个事件中我将值绑定(bind)到一个 session 变量。我的问题是它每次都会回发页面,所以我想避免在该事件
我已经阅读了一些有关此问题的帖子,但找不到完整的答案。我有一个包含 3 行的 ListView,每行包含一个 TextView 和一个 EditText,以及一个扩展 BaseAdapter 的自定义
我正在学习如何编写 Android 应用程序并有一个问题。使用 TextWatcher 和在 onTextChanged 方法中设置一个等于 CharSequence 参数的字符串值并简单地使用 ge
我是一名优秀的程序员,十分优秀!