Jan Vepřek
Jan Vepřek

Reputation: 59

How to change content of activity according to which intent started it?

I've got an activity called SI with GridView which contains units that take you to another activity on click. I would like to know how to get to the same activity that will just change its TextViews depending on which intent started it.

public class SI extends AppCompatActivity {

    GridView gridView;
    String[] units;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zakladnijednotky);
        gridView = (GridView) findViewById(R.id.gridView1);
        units = getResources().getStringArray(R.array.units);
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, units);
        gridView.setAdapter(adapter);
        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v,
                                    int position, long id) {

                if (gridView.getItemAtPosition(position).toString().contains("amper")) {
                    Intent mintent = new Intent(SI.this, MainActivity.class);
                    startActivity(mintent);
                }
                else if (gridView.getItemAtPosition(position).toString().contains("kilogram")) {
                    Intent kilintent = new Intent(SI.this, MainActivity.class);
                    startActivity(kilintent);
                }
                else if (gridView.getItemAtPosition(position).toString().contains("metre")) {
                    Intent metrintent = new Intent(SI.this, MainActivity.class);
                    startActivity(metrintent);
                }
                else if (gridView.getItemAtPosition(position).toString().contains("second")) {
                    Intent mintent = new Intent(SI.this, MainActivity.class);
                    startActivity(mintent);
                }
                else if (gridView.getItemAtPosition(position).toString().contains("kelvin")) {
                    Intent mintent = new Intent(SI.this, MainActivity.class);
                    startActivity(mintent);
                }
                else if (gridView.getItemAtPosition(position).toString().contains("candela")) {
                    Intent mintent = new Intent(SI.this, MainActivity.class);
                    startActivity(mintent);
                }
                else if (gridView.getItemAtPosition(position).toString().contains("mol")) {
                    Intent mintent = new Intent(SI.this, MainActivity.class);
                    startActivity(mintent);
                }

            }
        });
    }
    ...
}

Upvotes: 0

Views: 39

Answers (1)

jorgeavilae
jorgeavilae

Reputation: 208

You can pass some data inside the intent and read that data in your new Activity.

Intent mintent = new Intent(SI.this, MainActivity.class);
String strName = "kilogram";
i.putExtra("KEY_NAME_FOR_STRING_I_NEED", strName);
startActivity(mintent); 

And read it

Bundle extras = getIntent().getExtras();
newString= extras.getString("KEY_NAME_FOR_STRING_I_NEED");

or, another way to do that

newString= getIntent().getStringExtra("KEY_NAME_FOR_STRING_I_NEED");

And change your TextViews depending wich value are inside newString

if(newString.equals("kilogram")) {
    //do something...
}

Upvotes: 1

Related Questions