lundi 4 avril 2016

My app seems to crash and i dont know why using AIDE

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