-2

I have 3 activity..In 1st activity i have 2 button 1st button is to start 2nd activity and 2nd button is to start 3rd activity.The 2nd activity containing edittext and button.The 3rd activity containing Spinner.I want to transfer data from edittext to spinner

1 activity

2 activity

[3 activity][3]

first activity

public class MainActivity extends Activity {
String item;

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


}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {
        if(resultCode == Activity.RESULT_OK){
            String resultStr = data.getStringExtra("result");
            item=resultStr;
        }
    }
}

public void start1(View view)
{
    Intent intent = new Intent(this,Task.class);
    startActivityForResult(intent, 1);
}
public void start2(View view)
{
    Intent intent = new Intent(getBaseContext(), Spinner.class);
    intent .putExtra("send_data",item);
    startActivity(intent);
}
}

second activity:

public class Task extends Activity {
Button btnAdd;
EditText subject;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_task);
    btnAdd = (Button)findViewById(R.id.add) ;


    btnAdd.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            subject = (EditText) findViewById(R.id.editText);
            String content = subject.getText().toString();
            Intent returnIntent = new Intent();
            returnIntent.putExtra("result",content);
            setResult(Activity.RESULT_OK,returnIntent);
        }
    });
}

}

third activity:

public class Spinner extends Activity {
android.widget.Spinner spinner;
ArrayAdapter<String> dataAdapter;
ArrayList<String> list = new ArrayList<String>();
SharedPreferences sharedPref;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_spinner);
    spinner = (android.widget.Spinner) findViewById(R.id.spinner);


    sharedPref = getSharedPreferences("Info", Context.MODE_PRIVATE);
    Set<String> savedStringSet = sharedPref.getStringSet("SpinnerData", null);
    if (savedStringSet != null) {
        list = new ArrayList<>(savedStringSet);
    }

    dataAdapter = new ArrayAdapter<String>(Spinner.this, android.R.layout.simple_spinner_item, list.toArray(new String[list.size()]));
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(dataAdapter);
    spinner.setPrompt("SELECT AN ITEM");
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> adapter, View v,
                                   int position, long id) {



        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {


        }
    });

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String value = extras.getString("send_data");
        list.add(value);
        dataAdapter = new ArrayAdapter<String>(Spinner.this, android.R.layout.simple_spinner_item, list);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(dataAdapter);
    }
}
@Override
protected void onDestroy() {
    super.onDestroy();
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putStringSet("SpinnerData", new HashSet<String>(list));
    editor.apply();
}

Error:

   java.lang.NullPointerException
                                                                                 at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
                                                                              at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
                                                                              at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:193)
                                                                              at android.widget.Spinner.onMeasure(Spinner.java:429)
                                                                              at android.view.View.measure(View.java:15172)
                                                                              at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617)
                                                                              at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399)
                                                                              at android.view.View.measure(View.java:15172)
                                                                              at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
                                                                              at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                                                                              at android.view.View.measure(View.java:15172)
                                                                              at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
                                                                              at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390)
                                                                              at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
                                                                              at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
                                                                              at android.view.View.measure(View.java:15172)
                                                                              at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
                                                                              at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                                                                              at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2148)
                                                                              at android.view.View.measure(View.java:15172)
                                                                              at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1848)
                                                                              at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1100)
                                                                              at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1273)
                                                                              at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
                                                                              at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212)
                                                                              at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
                                                                              at android.view.Choreographer.doCallbacks(Choreographer.java:555)
                                                                              at android.view.Choreographer.doFrame(Choreographer.java:525)
                                                                              at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
                                                                              at android.os.Handler.handleCallback(Handler.java:615)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                              at android.os.Looper.loop(Looper.java:137)
                                                                              at android.app.ActivityThread.main(ActivityThread.java:4745)
                                                                              at java.lang.reflect.Method.invokeNative(Native Method)
                                                                              at java.lang.reflect.Method.invoke(Method.java:511)
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                                              at dalvik.system.NativeStart.main(Native Method)
Badprince
  • 19
  • 4

2 Answers2

1

First part is taking back a result from the 2nd activity to the 1st activity.

For this I took this SO answer. You can read it below.

From your FirstActivity call the SecondActivity using startActivityForResult() method

For example:

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);

In your SecondActivity set the data which you want to return back to FirstActivity. If you don't want to return back, don't set any.

For example: In secondActivity if you want to send back data:

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();

If you don't want to return data:

Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();

Now in your FirstActivity class write following code for the onActivityResult() method.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {
        if(resultCode == Activity.RESULT_OK){
            String result=data.getStringExtra("result");
        }
        if (resultCode == Activity.RESULT_CANCELED) {
            //Write your code if there's no result
        }
    }
}//onActivityResult

The second part is done by passing this data from the first activity to the 3rd activity.

You can do this by doing the following:

Intent intent = new Intent(getBaseContext(), ThirdActivity.class);
intent .putExtra("key",result);
startActivity(intent);

And in the 3rd activity you can use:

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String value = extras.getString("key");
    //The key argument here must match that used in the other activity
}

Hope this helps

Graham
  • 7,431
  • 18
  • 59
  • 84
Pier Giorgio Misley
  • 5,305
  • 4
  • 27
  • 66
0

You can finish your second activity passing edittext data to first activity with onActivityResult. Then you can launch your third activity passing your edittext data to it. Then in your third activity you can populate dinamically your spinner data.

If i can suggest you, spinner is an old api, let's use something better as a list in a dialogfragment

firegloves
  • 5,581
  • 2
  • 29
  • 50