dimanche 26 juin 2016

Android setText Textview from edittext in the second activity with custom adapter

I am working custom adapter with listview which is clickable at each item that will display the second activity which can edit listview's fields.

Here is my problem. On the second activity, it should be able to edit the first activity when complete button clicked but it does not work.

I've tried it in various ways. Any idea for me?

Thank you for reading it.

first activity : DisplayTasksActivity second activity : EditTaskActivity

custom adapter : Task, Tasklist

06-24 00:05:56.225 5621-5621/? E/AndroidRuntime: FATAL EXCEPTION: main
                                             Process: com.comp3617.assignment2.chiseongoh, PID: 5621
                                             java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=1, data=Intent { (has extras) }} to activity {com.comp3617.assignment2.chiseongoh/com.comp3617.assignment2.chiseongoh.DisplayTasksActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
                                                 at android.app.ActivityThread.deliverResults(ActivityThread.java:3699)
                                                 at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742)
                                                 at android.app.ActivityThread.-wrap16(ActivityThread.java)
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)
                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                 at android.os.Looper.loop(Looper.java:148)
                                                 at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                              Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
                                                 at com.comp3617.assignment2.chiseongoh.DisplayTasksActivity.onActivityResult(DisplayTasksActivity.java:108)
                                                 at android.app.Activity.dispatchActivityResult(Activity.java:6428)
                                                 at android.app.ActivityThread.deliverResults(ActivityThread.java:3695)
                                                 at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742) 
                                                 at android.app.ActivityThread.-wrap16(ActivityThread.java) 
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393) 
                                                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                 at android.os.Looper.loop(Looper.java:148) 
                                                 at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                 at java.lang.reflect.Method.invoke(Native Method) 
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast;

public class DisplayTasksActivity extends AppCompatActivity {

    private ListView lvlist;
    private TextView title;
    private TextView desc;
    private TextView due;
    private TextView cate;
    private TextView prior;
    private TextView title2;
    private TextView desc2;
    private TextView due2;
    private Spinner cate2;
    private Spinner prior2;
    static int REQUEST_CODE;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        title2 = (TextView) findViewById(R.id.tit2);
        desc2 = (TextView) findViewById(R.id.des2);
        due2 = (TextView) findViewById(R.id.due2);
        cate2 = (Spinner) findViewById(R.id.cate2);
        prior2 = (Spinner) findViewById(R.id.prior2);


        title = (TextView) findViewById(R.id.tit);
        desc = (TextView) findViewById(R.id.des);
        due = (TextView) findViewById(R.id.due);
        cate = (TextView) findViewById(R.id.cate);
        prior = (TextView) findViewById(R.id.prior);
        lvlist = (ListView) findViewById(R.id.listView);

        ActionBar actionBar = getSupportActionBar();
        actionBar.setTitle("Task Manager");
        actionBar.setDisplayHomeAsUpEnabled(true);

        TaskList adapter = new TaskList(this, Task.Tasks());
        lvlist.setAdapter(adapter);
        lvlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                REQUEST_CODE = position;
                Intent intent = new Intent(DisplayTasksActivity.this, EditTaskActivity.class);
                startActivityForResult(intent, position);
                //startActivity(new Intent(MainActivity.this, ColorchangedActivity.class));
                Toast.makeText(DisplayTasksActivity.this, Integer.toString(position), Toast.LENGTH_SHORT).show();
            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        String action ="";
        switch(item.getItemId()){
            case R.id.action_create:
                action = "Create an item";
                break;
            case R.id.action_delete:
                action = "Delete an item";
                break;
            case R.id.action_settings:
                action = "Display settings...";
                break;
            default:
                return super.onOptionsItemSelected(item);
        }
        Toast.makeText(this, action, Toast.LENGTH_LONG).show();
        return true;
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //String storedtit = title2.getText().toString();
        //String storeddesc = desc2.getText().toString();
        //String storeddue = due2.getText().toString();
        //String storedcate = cate2.getSelectedItem().toString();
        //String storedprior = prior2.getSelectedItem().toString();
        String storedtit="";
        String storeddesc="";
        String storeddue="";
        String storedcate="";
        String storedprior="";
        if(resultCode != RESULT_CANCELED){
            if (requestCode == REQUEST_CODE) {
                //Intent intent = getIntent();
                //Bundle bd = intent.getExtras();
                View view = null;
                Toast.makeText(this, "work", Toast.LENGTH_LONG).show();
                //bd.putString("title", storedtit);
                //bd.putString("description", storeddesc);
                //bd.putString("duedate", storeddue);
                //bd.putString("category", storedcate);
                //bd.putString("prior", storedprior);

                //storedtit = data.getStringExtra("title");
                //storeddesc = data.getStringExtra("description");
                //storeddue = data.getStringExtra("duedate");
                //storedcate = data.getStringExtra("category");
                //storedprior = data.getStringExtra("prior");

                TaskList adapter = new TaskList(this, Task.Tasks());

                lvlist.setAdapter(adapter);
            }
        }

    }

    @Override
    protected void onResume() {
        super.onResume();
        TaskList task = new TaskList(this, Task.Tasks());
        lvlist.setAdapter(task);
    }
}

import android.app.DatePickerDialog; import android.app.Dialog; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.DatePicker; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast;

import java.util.Calendar;

public class EditTaskActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener{
    private TextView title2;
    private TextView desc2;
    private TextView due2;
    private Spinner cate2;
    private Spinner prior2;
    private String[] arraySpinner;
    private String[] arraySpinner2;
    private Button complete;
    private Task task;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_edit_task);
        Intent intent = getIntent();

        title2 = (TextView) findViewById(R.id.tit2);
        desc2 = (TextView) findViewById(R.id.des2);
        due2 = (TextView) findViewById(R.id.due2);
        cate2 = (Spinner) findViewById(R.id.cate2);
        prior2 = (Spinner) findViewById(R.id.prior2);

        this.arraySpinner = new String[] {
                "Work", "Home", "Personal"
        };
        this.arraySpinner2 = new String[] {
                "Low", "Medium", "High"
        };

        Spinner s = (Spinner) findViewById(R.id.cate2);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, arraySpinner);

        Spinner s2 = (Spinner) findViewById(R.id.prior2);
        ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, arraySpinner2);
        s.setAdapter(adapter);
        s2.setAdapter(adapter2);
        complete = (Button) findViewById(R.id.complete);
        complete.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                String tit = title2.getText().toString();
                String desc = desc2.getText().toString();
                String due = due2.getText().toString();
                String cate = cate2.getSelectedItem().toString();
                String prior = prior2.getSelectedItem().toString();

                Intent intent = new Intent();
                Bundle extras = new Bundle();
                extras.putString("title", tit);
                extras.putString("description", desc);
                extras.putString("duedate", due);
                extras.putString("category", cate);
                extras.putString("prior", prior);

                //intent.putExtra("title", tit);
                //intent.putExtra("description", desc);
                //intent.putExtra("duedate", due);
                //intent.putExtra("category", cate);
                //intent.putExtra("prior", prior);
                intent.putExtras(extras);
                setResult(RESULT_OK, intent);
                finish();
                //startActivity(intent);
            }
        });
    }
    public static class DatePickerFragment extends DialogFragment
    {
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            // Use the current date as the default date in the picker
            final Calendar c = Calendar.getInstance();

            int year = c.get(Calendar.YEAR);
            int month = c.get(Calendar.MONTH);
            int day = c.get(Calendar.DAY_OF_MONTH);

            DatePickerDialog.OnDateSetListener dateSetListener = (DatePickerDialog.OnDateSetListener)getActivity();

            return new DatePickerDialog(getActivity(), dateSetListener, year, month, day);
        }
    }

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        Toast.makeText(this, "Selected Date : " + String.format("%d-%d-%d", year,
                monthOfYear + 1, dayOfMonth), Toast.LENGTH_LONG).show();
        due2.setText(String.format("%d-%d-%d", year, monthOfYear + 1, dayOfMonth));
    }



    public void onClick(View v) {
        DatePickerFragment datePickerFragment = new DatePickerFragment();
        datePickerFragment.show(getSupportFragmentManager(), "ShowDatePicker");
    }
}

import java.util.ArrayList; import java.util.List;

/**
 * Created by norne on 2016-06-23.
 */
public class Task {
    private String title;
    private String description;
    private String duedate;
    private String category;
    private String priority;



    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
    public String getDescription() {
        return description;
    }

    public void setdescription(String description) {
        this.description = description;
    }

    public String getDuedate() {
        return duedate;
    }
    public void setDuedate(String duedate) {
        this.duedate = duedate;
    }

    public String getCategory() {

        return category;
    }
    public void setCategory(String category) {

        this.category = category;
    }

    public String getPriority() {
        return priority;
    }

    public void setPriority(String priority) {
        this.priority = priority;
    }

    public static List<Task> Tasks() {
        List<Task> tasks = new ArrayList<Task>();
        Task task1 = new Task();

        tasks.add(task1);

        Task task2 = new Task();
        tasks.add(task2);

        Task task3 = new Task();
        tasks.add(task3);

        return tasks;
    }

}
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import java.util.List;

/**
 * Created by norne on 2016-06-23.
 */
public class TaskList extends ArrayAdapter<Task>{
    private final Context ctx;
    private List<Task> tasks;


    public TaskList(Context ctx, List<Task> tasks) {
        super(ctx, 0, tasks);
        this.ctx = ctx;
        this.tasks = tasks;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View rowView = null;
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            rowView = inflater.inflate(R.layout.row_layout, parent, false);

        }
        else
            rowView = convertView;


        //TextView tvTitle = (TextView)rowView.findViewById(R.id.teamTitle);
       // TextView tvDesc = (TextView)rowView.findViewById(R.id.description);
        TextView title;
        TextView desc;
        TextView due;
        TextView cate;
        TextView prior;
        title = (TextView) rowView.findViewById(R.id.tit);
        desc = (TextView) rowView.findViewById(R.id.des);
        due = (TextView) rowView.findViewById(R.id.due);
        cate = (TextView) rowView.findViewById(R.id.cate);
        prior = (TextView) rowView.findViewById(R.id.prior);

        Task task = tasks.get(position);


        title.setText(task.getTitle());
        desc.setText(task.getDescription());
        due.setText(task.getDuedate());
        cate.setText(task.getCategory());
        prior.setText(task.getPriority());
        return rowView;
    }
}

Aucun commentaire:

Enregistrer un commentaire