-1

hi im trying to pass string values that a user enters from one activity to another and have those values displayed in a table on the second activity, however when we move to the second activity the table is displayed but its empty, i was wondering if anyone could help me find where my problem is in my code,

<h1>Activity 1 where user enters information</h1>  

`package com.example.scheduler;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Save extends Activity implements OnClickListener
{
    Button sbm,bk;
    EditText fname,lname,course,time,inst,title;
    private static final int table = 1810;
    private String newfname,newlname,newcourse,newtitle,newtime,newinst;

    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.newb);
        sbm = (Button) findViewById(R.id.button1);
        sbm.setOnClickListener(this);
        bk = (Button) findViewById(R.id.button2);
        bk.setOnClickListener(this);
        fname = (EditText) findViewById(R.id.editText1);
        lname = (EditText) findViewById(R.id.editText2);
        course = (EditText) findViewById(R.id.editText3);
        time = (EditText) findViewById(R.id.editText4);
        inst = (EditText) findViewById(R.id.editText5);
        title = (EditText) findViewById(R.id.editText6);
    }

    public void onClick(View v)  
    {
        v.getId();
        try
        {
        Intent launch = new Intent(Save.this,table.class);
        Bundle myData = new Bundle();

        if(sbm.isPressed())
        {
            if(fname.getText().toString().length()==0||lname.getText().toString().length()==0||course.getText().toString().length()==0||time.getText().toString().length()==0
            ||inst.getText().toString().length()==0||title.getText().toString().length()==0)
            {
                Toast.makeText(this, "Please fill in all fields!", Toast.LENGTH_LONG).show();
            }else
            {
                newfname = fname.getText().toString();
                newlname = lname.getText().toString();
                newcourse = course.getText().toString();
                newtime = time.getText().toString();
                newinst = inst.getText().toString();
                newtitle = title.getText().toString();
                myData.putString("fname", newfname);
                myData.putString("lname", newlname);
                myData.putString("course", newcourse);
                myData.putString("time", newtime);
                myData.putString("instructor", newinst);
                myData.putString("title", newtitle);
                startActivityForResult(launch,table);
            }
        }
        }catch(Exception e)
        {
            Toast.makeText(getBaseContext(), e.getMessage(),
                    Toast.LENGTH_LONG).show();
        }
        if(bk.isPressed())
            {
                finish();
            }
    }
}
`  




<h1>Activity 2 where information is displayed</h1>  

    package com.example.scheduler;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class table extends Activity
{
    TextView titletv,fnametv,lnametv,coursetv,timetv,insttv;

    public void onCreate(Bundle savedInstance)
    {
        super.onCreate(savedInstance);
        setContentView(R.layout.schedule_table);
        titletv = (TextView) findViewById(R.id.titleTextView);
        fnametv = (TextView) findViewById(R.id.fnameTextView);
        lnametv = (TextView) findViewById(R.id.lnameTextView);
        coursetv = (TextView) findViewById(R.id.courseTextView);
        timetv = (TextView) findViewById(R.id.timeTextView);
        insttv = (TextView) findViewById(R.id.instructorTextView);
        try
        {
        Intent myLocalIntent = getIntent();
        Bundle myBundle = myLocalIntent.getExtras();

        String strfname = myBundle.getString("fname");
        String strlname = myBundle.getString("lname");
        String strcourse = myBundle.getString("course");
        String strtime = myBundle.getString("time");
        String strinst = myBundle.getString("instructor");
        String strtitle = myBundle.getString("title");
        titletv.setText(strtitle);
        fnametv.setText(strfname);
        lnametv.setText(strlname);
        coursetv.setText(strcourse);
        timetv.setText(strtime);
        insttv.setText(strinst);
        myLocalIntent.putExtras(myBundle);
        setResult(Activity.RESULT_OK, myLocalIntent);
        }catch(Exception e)
        {
            Toast.makeText(getBaseContext(), e.getMessage(),
                    Toast.LENGTH_LONG).show();
        }
        finally
        {

        }
    }
}`
jordan
  • 305
  • 1
  • 7
  • 17
  • [**Please See this Blog. This Can Help You**](http://startandroiddevelopment.blogspot.in/2013/11/how-to-pass-boolean-int-string-integer.html) –  Nov 04 '13 at 04:52

4 Answers4

2

you have to put the bundle inside the Intent

launch.putExtras(myData)
Blackbelt
  • 156,034
  • 29
  • 297
  • 305
1

You declare:

  Bundle myData = new Bundle();

But you are starting activity with table:

 startActivityForResult(launch,table);

Change it to:

  launch.putExtras(myData)
Carlos Landeras
  • 11,025
  • 11
  • 56
  • 82
0

you can declaer the string in the main activity like this

static String yourString="";

assign the value to your string

yourString="what_Ever_Value";

and call it from the other activity like the following:

String yourString=packgeName.ClassName.yourString;
Husam A. Al-ahmadi
  • 2,056
  • 2
  • 20
  • 27
  • 1
    that is the worst thing you can do. the old activity could be garbage collected (along with it's .class) because of the way the dalvik VM works, and you will lose the string. – meredrica Nov 29 '12 at 18:47
0

If this is Still open and being looked at you really should be using shared preferences for this. http://developer.android.com/guide/topics/data/data-storage.html#pref

simpler and more efficient than intents and with shared prefs you can pass data to fragments as well as activities and vice versa

KBusc
  • 663
  • 8
  • 24