-1
public class Update extends Activity {

EditText edt_remark, edt_date;
Button but_save, but_cancel;
Spinner spin_stage, spin_status;
ImageButton but_date;
ListView lv;
String data, jobimporter, jobstage, jobstatus, jobdate, updatedremark,
        stagename, statusname, updateddate, updatedstage, updatedstatus;
String sending_data, sending_importer, sending_stage, sending_status,
        sending_remark, sending_date;
String stage1, parsedstage, receivedstage;
ArrayList<String> list, list_stage, list_status;
Calendar cal;
int day, month, year, stageid, parsedstageid1; 
public static int parsedstageid2;
private static String TagContacts = "Employee";
JSONArray contacts = null;
ImageView research;
EditText getnewsearch;
Statustask st;
Postingtask pt;
Stageidtask stid;


@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setTitle("Update Page");
    setContentView(R.layout.copyofupdate);


    edt_remark = (EditText) findViewById(R.id.edit_remark);
    edt_date = (EditText) findViewById(R.id.edit_date);
    but_save = (Button) findViewById(R.id.button_save);
    but_cancel = (Button) findViewById(R.id.button_cancel);
    but_date = (ImageButton) findViewById(R.id.button_date);
    spin_stage = (Spinner) findViewById(R.id.spinner_stage);
    spin_status = (Spinner) findViewById(R.id.spinner_status);
    lv = (ListView) findViewById(R.id.listView1);

    research = (ImageView) findViewById(R.id.button1);
    getnewsearch = (EditText) findViewById(R.id.editText1);

    list = new ArrayList<String>();
    list_stage = new ArrayList<String>();

    data = getIntent().getExtras().getString("DATA");
    jobimporter = getIntent().getExtras().getString("JOBIMPORTER");
    jobstage = getIntent().getExtras().getString("JOBSTAGE");
    jobstatus = getIntent().getExtras().getString("JOBSTATUS");
    jobdate = getIntent().getExtras().getString("JOBDATE");


    cal = Calendar.getInstance();
    day = cal.get(Calendar.DAY_OF_MONTH);
    month = cal.get(Calendar.MONTH);
    year = cal.get(Calendar.YEAR);
    edt_date.setText(day + " / " + (month + 1) + " / " + year);

    list.add("Job/BE No. : " + data);
    list.add("Importer : " + jobimporter);
    list.add("Current Stage : " + jobstage);
    list.add("Current Status : " + jobstatus);
    list.add("Status Date : " + jobdate);

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(Update.this,
            android.R.layout.simple_list_item_1, list);
    lv.setAdapter(adapter);

    new Stagetask().execute();

    research.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String newdata = getnewsearch.getText().toString();
            Log.d("NEWDATA",newdata);
            if(TextUtils.isEmpty(newdata)==true) {
                Toast.makeText(Update.this, "Enter BE/JOB No.", Toast.LENGTH_SHORT).show();
            }
            else {

            Intent ii = new Intent(Update.this,SearchActivity.class);
            ii.putExtra("NEWDATA", newdata);
            ii.putExtra("FLAG", 200);
            startActivity(ii);
            finish();
            }
        }
    });
    but_cancel.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            AlertDialog.Builder alert = new AlertDialog.Builder(
                    Update.this);
            alert.setTitle("Jobstage update");
            alert.setMessage("Are you sure you want to cancel???");
            alert.setCancelable(false);
            alert.setPositiveButton("Yes",
                    new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {

                             Intent ii = new Intent(Update.this,SearchActivity.class);
                             ii.putExtra("FLAG",100);
                             startActivity(ii);
                             finish();
                        }
                    });
            alert.setNegativeButton("No",
                    new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            // TODO Auto-generated method stub
                            }
                    });
            alert.create().show();
        }
    });

    but_save.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            try {

                StringBuilder builder = new StringBuilder();
                builder.append(month + 1).append("-").append(day)
                        .append("-").append(year);
                updateddate = builder.toString();

                updatedremark = edt_remark.getText().toString();
                updatedstage = spin_stage.getSelectedItem().toString();
                updatedstatus = spin_status.getSelectedItem().toString();

                sending_data = data.trim();
                sending_importer = jobimporter.replaceAll(" ", "%20")
                        .trim();
                sending_stage = updatedstage.replaceAll(" ", "%20").trim();
                sending_status = updatedstatus.trim()
                        .replaceAll(" ", "%20");
                sending_remark = updatedremark.replaceAll(" ", "%20")
                        .trim();
                sending_date = updateddate.trim();

                if (sending_importer.isEmpty() || sending_stage.isEmpty()
                        || sending_status.isEmpty()
                        || sending_remark.isEmpty()
                        || sending_date.isEmpty()) {
                    Toast.makeText(Update.this, "Enter complete details",
                            Toast.LENGTH_SHORT).show();
                } else {
                    AlertDialog.Builder alert = new AlertDialog.Builder(
                            Update.this);
                    alert.setTitle("Jobstage update");
                    alert.setMessage("Do you want to save this record???");
                    alert.setCancelable(false);
                    alert.setPositiveButton("Yes",
                            new DialogInterface.OnClickListener() {

                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {

                                     pt= new Postingtask();
                                     pt.execute();
                                     Toast.makeText(Update.this, "Successfull", Toast.LENGTH_SHORT).show();
                                     Intent ii = new Intent(Update.this,SearchActivity.class);
                                     ii.putExtra("FLAG",100);
                                     startActivity(ii);
                                     finish();
                                }
                            });
                    alert.setNegativeButton("No",
                            new DialogInterface.OnClickListener() {

                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    // TODO Auto-generated method stub
                                    Toast.makeText(Update.this,
                                            "Not Saved", Toast.LENGTH_SHORT)
                                            .show();

                                }
                            });
                    alert.create().show();

                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });

    but_date.setOnClickListener(new OnClickListener() {

        @SuppressWarnings("deprecation")
        @Override
        public void onClick(View v) {

            showDialog(0);
        }
    });
    Log.d("parsedstageid2 in ONCREATE",String.valueOf(parsedstageid2));
    spin_stage
            .setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

                @Override
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub

                    String selectedstage = (String) arg0.getSelectedItem();
                    Log.d("SELECTED STAGE in Spinner", selectedstage);

                    stid = new Stageidtask();
                    stid.receivedstage = selectedstage;
                    stid.execute();
                }

                @Override
                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub

                }
            });
    }

public void passing(Integer result) {
    // TODO Auto-generated method stub

    Log.d("Received parsedstageid2 in passing()",String.valueOf(result));


    st = new Statustask(result);
        st.execute();
        ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(Update.this, android.R.layout.simple_spinner_dropdown_item,st.list_status);
        spin_status.setAdapter(adapter1);
}


@Override
protected Dialog onCreateDialog(int id) {
    return new DatePickerDialog(this, datePickerListener, year, month, day);
}

private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
    public void onDateSet(DatePicker view, int selectedYear,
            int selectedMonth, int selectedDay) {
        edt_date.setText(selectedDay + " / " + (selectedMonth + 1) + " / "
                + selectedYear);
    }
};

public class Stagetask extends AsyncTask<Void, Void, Void> {


    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(Void... arg0) {
        // TODO Auto-generated method stub

        String url = "http://114.143.96.201/Job/Default.aspx?query=select%20*%20from%20M_Stage";
        ServiceHandler sh = new ServiceHandler();
        String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);

        if (jsonStr != null) {
            try {
                JSONObject jsonObj = new JSONObject(jsonStr);

                // Getting JSON Array node
                contacts = jsonObj.getJSONArray(TagContacts);
            //  list_stage.add(0, "Choose here");
                runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        for (int i = 0; i < contacts.length(); i++) {
                            try {
                                JSONObject c = contacts.getJSONObject(i);

                                stagename = c.getString("StageName");
                                Log.d("STAGE",stagename);
                                list_stage.add(stagename);

                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    }
                });

            } catch (JSONException e) {
                e.printStackTrace();
            }
        } else {
            Log.e("ServiceHandler", "Couldn't get any data from the url");
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                Update.this, android.R.layout.simple_spinner_dropdown_item,
                list_stage);
        spin_stage.setAdapter(adapter);
    }
}

}

Now below is the StatusTask class.. public class Statustask extends AsyncTask {

private static String TagContacts = "Employee";
JSONArray contacts;
ArrayList<String> list_status = new ArrayList<String>();
String statusname;
int stageid1;

public Statustask(Integer result) {
    // TODO Auto-generated constructor stub
    stageid1 = result;
    Log.d("STAGEID1 value",String.valueOf(stageid1));
}

@Override
protected void onPreExecute() {
    // TODO Auto-generated method stub
    super.onPreExecute();
}

@Override
protected Void doInBackground(Void... arg0) {
    // TODO Auto-generated method stub
    String url = "http://114.143.96.201/Job/Default.aspx?query=select%20*%20from%20T_stagestatus%20where%20stageid="+stageid1;
    Log.d("URL IN STATUSTASK",url);
    ServiceHandler sh = new ServiceHandler();
    String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);

    if (jsonStr != null) {
        try {
            JSONObject jsonObj = new JSONObject(jsonStr);

            // Getting JSON Array node
            contacts = jsonObj.getJSONArray(TagContacts);

                    for (int i = 0; i < contacts.length(); i++) {
                        try {
                            JSONObject c = contacts.getJSONObject(i);

                            statusname = c.getString("StatusName");
                            list_status.add(statusname);
                            Log.d("LIST_STATUS",statusname);

                        } catch (Exception e) {
                            e.printStackTrace();
                        }

                }


        } catch (JSONException e) {
            e.printStackTrace();
        }
    } else {
        Log.e("ServiceHandler", "Couldn't get any data from the url");
    }

    return null;
}

@Override
protected void onPostExecute(Void result) {
    super.onPostExecute(result);

}

}

Now i am getting the below error:

03-20 05:49:17.867: E/AndroidRuntime(2960): FATAL EXCEPTION: main
03-20 05:49:17.867: E/AndroidRuntime(2960): Process: com.vts.jobstage, PID: 2960
03-20 05:49:17.867: E/AndroidRuntime(2960): java.lang.IllegalStateException: System services not available to Activities before onCreate()
03-20 05:49:17.867: E/AndroidRuntime(2960):     at android.app.Activity.getSystemService(Activity.java:4532)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at android.widget.ArrayAdapter.init(ArrayAdapter.java:310)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:153)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at com.vts.jobstage.Update.passing(Update.java:289)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at com.vts.jobstage.Stageidtask.onPostExecute(Stageidtask.java:83)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at com.vts.jobstage.Stageidtask.onPostExecute(Stageidtask.java:1)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at android.os.AsyncTask.finish(AsyncTask.java:632)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at android.os.Handler.dispatchMessage(Handler.java:102)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at android.os.Looper.loop(Looper.java:136)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at android.app.ActivityThread.main(ActivityThread.java:5001)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at java.lang.reflect.Method.invokeNative(Native Method)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at java.lang.reflect.Method.invoke(Method.java:515)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
03-20 05:49:17.867: E/AndroidRuntime(2960):     at dalvik.system.NativeStart.main(Native Method)
Fahim
  • 12,198
  • 5
  • 39
  • 57
Kamal
  • 1
  • 2
  • you should not use runOnUiThread method in doInBackground thread... move your code from there to onPostExecute method – Fahim Mar 20 '15 at 10:17
  • Fahim-You are talking about the stagetask class??? – Kamal Mar 20 '15 at 10:20
  • what's the purpose of setTitle("__"); function before your setContentView(); – Sunny Mar 20 '15 at 10:28
  • Sunny- that is of no use.....forgot to comment it. Pls help me about the error.. – Kamal Mar 20 '15 at 10:30
  • Fahim - thats not where i am getting the error..... the error is regarding the array adapter in the passing() method. – Kamal Mar 20 '15 at 10:33
  • check passing() function. There you are trying to set new adapter to spinner ( ArrayAdapter adapter1 = new ArrayAdapter(Update.this, android.R.layout.simple_spinner_dropdown_item,st.list_status); spin_status.setAdapter(adapter1);) move this step after execution of async task. – Sunny Mar 20 '15 at 10:37
  • Sunny- that step is after the execution of Asynctack only.....even i tried putting that statement in the onCreate() and even out of the passing(), still i am getting the same error – Kamal Mar 20 '15 at 10:49
  • comment the steps i mentioned and run again. comment that spinner adapter creation and setting adapter to spinner and check – Sunny Mar 20 '15 at 10:57
  • Sunny - did that and still no use...same error – Kamal Mar 20 '15 at 10:59
  • issue lies with setting and creating spinner adapter, also try some log in your sp_stage.onOnItemSelectedListener – Sunny Mar 20 '15 at 11:06
  • Thanks Sunny and Fahim for your suggestions on this. I got the answer and the app is working perfectly alright in both AVD and mobile. The problem was runOnUiThread() inside the doInBackground()...I removed that runOnUiThread() from all the coding and now it is working. – Kamal Mar 21 '15 at 04:17

1 Answers1

0
      public void passing(Integer result) {
    /***************************   
     st = new Statustask(result);
    st.execute();
    /*******************************
      here your trying to set the result from task before the completion of task/***************(st.list_status)***********/
    ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(Update.this,android.R.layout.simple_spinner_dropdown_item,st.list_status);
    spin_status.setAdapter(adapter1);

  }

Move the below:

ArrayAdapter<String> adapter1 = new ArrayAdapter<String>          (Update.this,android.R.layout.simple_spinner_dropdown_item,st.list_status);
    spin_status.setAdapter(adapter1); 

to after the excecution stTask.

Sunny
  • 1,066
  • 1
  • 13
  • 32