I am developing an app that inserts and retreives data from SQLite and views them into listview. I followed these tutorials https://www.youtube.com/watch?v=vEL-PcbD3T4 and https://www.youtube.com/watch?v=3k3CunDZpFk step by step however my app crashes when I click on view reports. Note:I am using AIDE should I install some other software? Here is my code. I hope you can find out the reason. Main Activity:
package com.mycompany.trackmymigraine;
import android.app.*;
import android.os.*;
import android.view.*;
import android.content.*;
public class MainActivity extends Activity
{ @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void addReport(View view)
{
startActivity (new Intent(this, Saveinfo.class));
}
public void displayReports(View view)
{
startActivity(new Intent(this,Display_product.class));
}
}
AndroidMAnifest:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="Saveinfo" ></activity>
<activity android:name="Display_product"></activity>
</application>
Display_product:
package com.mycompany.trackmymigraine;
import android.os.*;
import android.app.*;
public class Display_product extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.display_product_layout);
BackgroundTask backGroundTask = new BackgroundTask (this);
backGroundTask.execute("get_info");
}
}
Saveinfo.java
package com.mycompany.trackmymigraine;
import android.os.*;
import android.app.*;
import android.widget.*;
import android.view.*;
public class Saveinfo extends Activity
{ EditText e_location, e_affectedactivity, e_sense, e_symptoms, e_triggers, e_affectedarea, e_duration, e_intensity, e_medication;
String location, activityaffected, sense, symptoms, triggers, affectedarea, duration, intensity, medication;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.save_info_layout);
e_symptoms=(EditText) findViewById(R.id.d_symptoms);
e_location=(EditText) findViewById(R.id.d_location);
e_sense=(EditText) findViewById(R.id.d_sense);
e_affectedactivity=(EditText) findViewById(R.id.d_activityaffected);
e_triggers=(EditText) findViewById(R.id.d_triggers);
e_affectedarea=(EditText) findViewById(R.id.d_affectedarea);
e_duration=(EditText) findViewById(R.id.d_duration);
e_intensity=(EditText)findViewById(R.id.d_intensity);
e_medication=(EditText)findViewById(R.id.d_medication);
}
public void saveData(View view)
{
location = e_location.getText().toString();
activityaffected = e_affectedactivity.getText().toString();
sense = e_sense.getText().toString();
symptoms = e_symptoms.getText().toString();
triggers = e_triggers.getText().toString();
affectedarea = e_affectedarea.getText().toString();
duration = e_duration.getText().toString();
intensity = e_intensity.getText().toString();
medication = e_medication.getText().toString();
BackgroundTask backgroundTask= new BackgroundTask(this);
backgroundTask.execute("add_info",location,activityaffected,sense,symptoms,triggers,affectedarea,duration,intensity,medication);
}
}
BackGround task:
package com.mycompany.trackmymigraine;
import android.app.*;
import android.content.*;
import android.database.*;
import android.database.sqlite.*;
import android.os.*;
import android.widget.*;
public class BackgroundTask extends AsyncTask<String,Report,String>
{ Context ctx;
ReportAdapter reportAdapter;
Activity activity;
ListView listView;
BackgroundTask(Context ctx)
{
this.ctx= ctx;
activity=(Activity)ctx;
}
@Override
protected void onPreExecute()
{
// TODO: Implement this method
super.onPreExecute();
}
@Override
protected String doInBackground(String...params)
{
// TODO: Implement this method
String method= params[0];
DbOperations dbOperations = new DbOperations(ctx);
if (method.equals("add_info"))
{
String location= params[1];
String activityaffected= params[2];
String sense= params[3];
String symptoms= params[4];
String triggers= params[5];
String affectedarea= params[6];
String duration= params[7];
String intensity= params[8];
String medication= params[9];
SQLiteDatabase db= dbOperations.getWritableDatabase();
dbOperations.addInformations(db,location,activityaffected,sense,symptoms,triggers,affectedarea,duration,intensity,medication);
return "One row inserted";
}
else if (method.equals("get_info"))
{ listView= (ListView)activity.findViewById(R.id.display_listview);
SQLiteDatabase db= dbOperations.getReadableDatabase();
Cursor cursor =dbOperations.getInformations(db);
reportAdapter= new ReportAdapter(ctx, R.layout.display_layout_row);
String location,activityaffected,sense,symptoms,triggers,affectedarea,duration,intensity,medication;
while(cursor.moveToNext())
{
location= cursor.getString(cursor.getColumnIndex(ReportContract.ReportEntry.LOCATION));
activityaffected= cursor.getString(cursor.getColumnIndex(ReportContract.ReportEntry.AFFECTEDACTIVITY));
sense= cursor.getString(cursor.getColumnIndex(ReportContract.ReportEntry.SENSE));
symptoms= cursor.getString(cursor.getColumnIndex(ReportContract.ReportEntry.SYMPTOMS));
triggers= cursor.getString(cursor.getColumnIndex(ReportContract.ReportEntry.TRIGGERS));
affectedarea= cursor.getString(cursor.getColumnIndex(ReportContract.ReportEntry.AFFECTEDAREA));
duration=cursor.getString(cursor.getColumnIndex(ReportContract.ReportEntry.DURATION));
intensity= cursor.getString(cursor.getColumnIndex(ReportContract.ReportEntry.INTENSITY));
medication= cursor.getString(cursor.getColumnIndex(ReportContract.ReportEntry.MEDICATION));
Report report = new Report(location,activityaffected,sense,symptoms,triggers,affectedarea,duration,intensity,medication);
publishProgress(report);
}
return "get_info";
}
return null;
}
@Override
protected void onProgressUpdate(Report... values)
{
reportAdapter.add(values[0]);
}
@Override
protected void onPostExecute(String result)
{ if (result.equals("get_info"))
{
listView.setAdapter(reportAdapter);
}
else
{
Toast.makeText(ctx,result,Toast.LENGTH_LONG).show();
// TODO: Implement this method
}
}
}
DBoperations:
package com.mycompany.trackmymigraine;
import android.database.sqlite.*;
import android.view.View.*;
import android.content.*;
import android.util.*;
import android.database.*;
public class DbOperations extends SQLiteOpenHelper
{ private static final int DB_VERSION =1;
private static final String DB_NAME= "report_info.db";
private static final String CREATE_QUERY="Create table"+ReportContract.ReportEntry.TABLE_NAME
+"("
+ReportContract.ReportEntry.LOCATION+" text,"
+ReportContract.ReportEntry.AFFECTEDACTIVITY+" text,"
+ReportContract.ReportEntry.SENSE+" text"
+ReportContract.ReportEntry.SYMPTOMS+" text,"
+ReportContract.ReportEntry.TRIGGERS+" text,"
+ReportContract.ReportEntry.AFFECTEDAREA+" text,"
+ReportContract.ReportEntry.DURATION+" text,"
+ReportContract.ReportEntry.INTENSITY+" text,"
+ReportContract.ReportEntry.MEDICATION+" text);";
DbOperations (Context ctx)
{
super (ctx, DB_NAME, null, DB_VERSION);
Log.d("Database operations","Database created");
}
@Override
public void onCreate(SQLiteDatabase db)
{
// TODO: Implement this method
db.execSQL(CREATE_QUERY);
Log.d("DataBase operations", "table created");
}
public void addInformations(SQLiteDatabase db, String location, String affectedarea, String sense, String symptoms, String triggers, String affectedactivity, String duration, String intensity, String medication)
{
ContentValues contentValues = new ContentValues();
contentValues.put(ReportContract.ReportEntry.LOCATION,location);
contentValues.put(ReportContract.ReportEntry.AFFECTEDACTIVITY,affectedactivity);
contentValues.put(ReportContract.ReportEntry.SENSE,sense);
contentValues.put(ReportContract.ReportEntry.SYMPTOMS,symptoms);
contentValues.put(ReportContract.ReportEntry.TRIGGERS,triggers);
contentValues.put(ReportContract.ReportEntry.AFFECTEDAREA,affectedarea);
contentValues.put(ReportContract.ReportEntry.DURATION,duration);
contentValues.put(ReportContract.ReportEntry.INTENSITY,intensity);
contentValues.put(ReportContract.ReportEntry.MEDICATION,medication);
db.insert(ReportContract.ReportEntry.TABLE_NAME,null,contentValues);
Log.d("Database operations","One row inserted");
}
public Cursor getInformations(SQLiteDatabase db)
{
String[] projections={ReportContract.ReportEntry.LOCATION, ReportContract.ReportEntry.AFFECTEDACTIVITY, ReportContract.ReportEntry.SENSE, ReportContract.ReportEntry.SYMPTOMS, ReportContract.ReportEntry.TRIGGERS, ReportContract.ReportEntry.AFFECTEDAREA, ReportContract.ReportEntry.DURATION, ReportContract.ReportEntry.INTENSITY, ReportContract.ReportEntry.MEDICATION};
Cursor cursor =db.query(ReportContract.ReportEntry.TABLE_NAME, projections,null,null,null,null,null);
return cursor;
}
@Override
public void onUpgrade(SQLiteDatabase db, int p2, int p3)
{
// TODO: Implement this method
}
}
ReportAdapter:
package com.mycompany.trackmymigraine;
import android.widget.*;
import java.util.*;
import android.content.*;
import android.view.*;
public class ReportAdapter extends ArrayAdapter
{
List list= new ArrayList();
public ReportAdapter (Context context, int resource)
{
super (context,resource);
}
public void add(Report object)
{ list.add(object);
// TODO: Implement this method
super.add(object);
}
@Override
public int getCount()
{
// TODO: Implement this method
return list.size();
}
@Override
public Object getItem(int position)
{
// TODO: Implement this method
return list.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View row= convertView;
ReportHolder reportHolder;
if (row == null)
{
LayoutInflater layoutInflater=(LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.display_layout_row ,parent,false);
reportHolder= new ReportHolder();
reportHolder.tx_location= (TextView)row.findViewById(R.id.t_location);
reportHolder.tx_activityaffected= (TextView)row.findViewById(R.id.t_activityaffected);
reportHolder.tx_sense= (TextView)row.findViewById(R.id.t_sense);
reportHolder.tx_symptoms= (TextView)row.findViewById(R.id.t_symptoms);
reportHolder.tx_triggers= (TextView)row.findViewById(R.id.t_triggers);
reportHolder.tx_affectedarea= (TextView)row.findViewById(R.id.t_affectedarea);
reportHolder.tx_duration= (TextView)row.findViewById(R.id.t_duration);
reportHolder.tx_triggers= (TextView)row.findViewById(R.id.t_intensity);
reportHolder.tx_medication= (TextView)row.findViewById(R.id.t_medication);
row.setTag(reportHolder);
}
else
{
reportHolder= (ReportHolder)row.getTag();
}
Report report= (Report)getItem(position);
reportHolder.tx_location.setText(report.getLocation().toString());
reportHolder.tx_activityaffected.setText(report.getAffectedactivity().toString());
reportHolder.tx_sense.setText(report.getSense().toString());
reportHolder.tx_symptoms.setText(report.getSymptoms().toString());
reportHolder.tx_triggers.setText(report.getTriggers().toString());
reportHolder.tx_affectedarea.setText(report.getAffectedarea().toString());
reportHolder.tx_duration.setText(report.getDuration().toString());
reportHolder.tx_intensity.setText(report.getIntensity().toString());
reportHolder.tx_medication.setText(report.getMedication().toString());
return row; }
static class ReportHolder
{
TextView tx_location,tx_activityaffected,tx_sense,tx_symptoms,tx_triggers, tx_affectedarea,tx_duration,tx_intensity,tx_medication;
}
}
ReportContract:
package com.mycompany.trackmymigraine;
public final class ReportContract
{
ReportContract(){}
public static abstract class ReportEntry
{
public static final String LOCATION="location";
public static final String AFFECTEDAREA="affectedarea";
public static final String SENSE="sense";
public static final String SYMPTOMS="symptoms";
public static final String TRIGGERS="Triggers";
public static final String AFFECTEDACTIVITY="affectedactivity";
public static final String DURATION="duration";
public static final String INTENSITY="intensity";
public static final String MEDICATION="medication";
public static final String TABLE_NAME="report_table";
}
}
Aucun commentaire:
Enregistrer un commentaire