at this time I want to ask, I got an error when I try to read my data from database, in Validation activity, The Error is Sign Below.
Validation.java
public class Validation extends Activity{
private static DBDataSource dataSource;
// Error Messages
private static final String REQUIRED_MSG = "required";
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
dataSource = new DBDataSource(this);
dataSource.open();
}
//this method is to check is my textbox empty or not, the i want to modified to check is my textbox empty or equals data from database
public static boolean hasText(EditText editText) {
ArrayList<Sma> list = dataSource.getAllSma(); >> when i add this code, the apps currently stop, and the got error message java.lang.NullPointer Exception
String text = editText.getText().toString().trim();
editText.setError(null);
// length 0 means there is no text
if (text.length() == 0) {
editText.setError(REQUIRED_MSG);
return false;
}
return true;
}
and here is my DBDataSource
public ArrayList<Sma> getAllSma()
{
ArrayList<Sma> daftarSma = new ArrayList<Sma>();
// select all SQL query
Cursor cursor = database.query(DBHelper.TABLE_NAME, allColumns, null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast())
{
Sma sekolah = cursorToSma(cursor);
daftarSma.add(sekolah);
cursor.moveToNext();
}
cursor.close();
return daftarSma;
}
can anyone help me figured this out about this error, cause i really don't know why this is happend. Thank you :D
and here when i call validation Activity
public class CreateData extends Activity implements OnClickListener{
private Validation valid;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.create_data);
edNama_sma = (EditText) findViewById(R.id.nama_sma);
registerViews();
}
private void registerViews() {
edNama_sma.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
valid.hasText(edNama_sma);
}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){}
});
@Override
public void onClick(View v)
{}
my Error
04-05 13:54:00.727: E/AndroidRuntime(27565): FATAL EXCEPTION: main
04-05 13:54:00.727: E/AndroidRuntime(27565): java.lang.NullPointerException
04-05 13:54:00.727: E/AndroidRuntime(27565): at com.example.validation.search.Validation.hasText(Validation.java:76)
04-05 13:54:00.727: E/AndroidRuntime(27565): at com.example.search.CreateData$5.afterTextChanged(CreateData.java:230)
04-05 13:54:00.727: E/AndroidRuntime(27565): at android.widget.TextView.sendAfterTextChanged(TextView.java:7259)
04-05 13:54:00.727: E/AndroidRuntime(27565): at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:8915)
04-05 13:54:00.727: E/AndroidRuntime(27565): at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:970)
04-05 13:54:00.727: E/AndroidRuntime(27565): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:497)
04-05 13:54:00.727: E/AndroidRuntime(27565): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:435)
04-05 13:54:00.727: E/AndroidRuntime(27565): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:30)
04-05 13:54:00.727: E/AndroidRuntime(27565): at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:672)
04-05 13:54:00.727: E/AndroidRuntime(27565): at android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:435)
04-05 13:54:00.727: E/AndroidRuntime(27565): at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:333)
04-05 13:54:00.727: E/AndroidRuntime(27565): at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77)
04-05 13:54:00.727: E/AndroidRuntime(27565): at android.os.Handler.dispatchMessage(Handler.java:99)
04-05 13:54:00.727: E/AndroidRuntime(27565): at android.os.Looper.loop(Looper.java:137)
04-05 13:54:00.727: E/AndroidRuntime(27565): at android.app.ActivityThread.main(ActivityThread.java:5099)
04-05 13:54:00.727: E/AndroidRuntime(27565): at java.lang.reflect.Method.invokeNative(Native Method)
04-05 13:54:00.727: E/AndroidRuntime(27565): at java.lang.reflect.Method.invoke(Method.java:511)
04-05 13:54:00.727: E/AndroidRuntime(27565): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803)
04-05 13:54:00.727: E/AndroidRuntime(27565): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570)
04-05 13:54:00.727: E/AndroidRuntime(27565): at dalvik.system.NativeStart.main(Native Method)
datasourceis not initialized when you call the method in a static way.Validationactivity?