web-dev-qa-db-fra.com

Utiliser les intentions pour transmettre des données entre les activités

J'essaie de transmettre les données entre les activités

J'utilise des intentions pour transmettre des données entre des activités régulières

considérez le code ci-dessous ::

AndroidTabRestaurantDescSearchListView.Java

public class AndroidTabRestaurantDescSearchListView extends TabActivity {

    // TabSpec Names
    private static final String INBOX_SPEC = "Rating";
    private static final String OUTBOX_SPEC = "Price";

    Button Photos;
    Button Filter;
    Button Search;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TabHost tabHost = getTabHost();

        // Inbox Tab
        TabSpec inboxSpec = tabHost.newTabSpec(INBOX_SPEC);
        Intent inboxIntent = new Intent(this, RatingDescriptionSearchActivity.class);
        inboxSpec.setIndicator(INBOX_SPEC);
        // Tab Content
        inboxSpec.setContent(inboxIntent);

        // Outbox Tab
        TabSpec PriceSpec = tabHost.newTabSpec(OUTBOX_SPEC);
        Intent PriceIntent = new Intent(this, PriceDescriptionSearchActivity.class);
        PriceSpec .setIndicator(OUTBOX_SPEC);
        PriceSpec.setContent(PriceIntent);


        // Adding all TabSpec to TabHost
        tabHost.addTab(inboxSpec); 
        tabHost.addTab(PriceSpec); 

        //Set the current value tab to default first tab
        tabHost.setCurrentTab(0);

    }

}

Supposons que j'envoie des données à partir d'une autre activité appelée Activity-1 à AndroidTabRestaurantDescSearchListView comme intention

Maintenant, comment puis-je recevoir les données dans AndroidTabRestaurantDescSearchListView que j’ai obtenu de Activity-1 puis à nouveau dans RatingDescriptionSearchActivity

La représentation picturale est ::

enter image description here

{EDIT} - Si cela est possible en fonction des réponses --- Ambiguïté car AndroidTabRestaurantDescSearchListView est une activité à onglet

TabSpec inboxSpec = tabHost.newTabSpec(INBOX_SPEC);
        Intent inboxIntent = new Intent(this, RatingDescriptionActivity.class);
        intent.putExtra("keyName", value);
        inboxSpec.setIndicator(INBOX_SPEC);
        // Tab Content
        inboxSpec.setContent(inboxIntent);
28
Devrath

Transmettre les données de Activity-1 à AndroidTabRes.. comme ci-dessous:

À l'activité d'envoi ...

Intent intent = new Intent(current.this, AndroidTabRestaurantDescSearchListView.class);
intent.putExtra("keyName","value");
startActivity(intent);

À AndroidTabRes.. activité ...

  String data = getIntent().getExtras().getString("keyName");

Ainsi, vous pouvez avoir des données à la réception de l'activité d'envoi de l'activité ...

Et dans votre classe AndroidTabRestaurantDescSearchListView, procédez comme suit:

String value= getIntent().getStringExtra("keyName");

Intent intent = new Intent(this, RatingDescriptionSearchActivity.class);
intent.putExtra("keyName", value);
startActivity(intent);

Ensuite, dans votre classe RatingDescriptionSearchActivity, procédez comme suit:

 String data= getIntent().getStringExtra("keyName");
62
GrIsHu

Essayez ceci à partir de votre activité AndroidTabRestaurantDescSearchListView

Intent intent  = new Intent(this,RatingDescriptionSearchActivity.class );
intent.putExtras( getIntent().getExtras() );
startActivity( intent );  

Et puis, à partir de RatingDescriptionSearchActivity activité, il suffit d'appeler

getIntent().getStringExtra("key")
7
Jans

Vous pouvez utiliser Bundle pour obtenir des données:

Bundle extras = intent.getExtras();
String data = extras.getString("data"); // use your key 

Et encore une fois, vous pouvez utiliser ces données pour l'activité suivante:

 Intent intent = new Intent(this, next_Activity.class);
   intent.putExtra("data", data);
   startActivity(intent);
5
SweetWisher ツ

Simple.

En supposant que dans votre Activity-1, vous l'avez fait:

String stringExtra = "Some string you want to pass";

Intent intent = new Intent(this, AndroidTabRestaurantDescSearchListView.class);

//include the string in your intent
intent.putExtra("string", stringExtra);

startActivity(intent);

Et dans votre classe AndroidTabRestaurantDescSearchListView, procédez comme suit:

//fetch the string  from the intent
String extraFromAct1 = getIntent().getStringExtra("string");

Intent intent = new Intent(this, RatingDescriptionSearchActivity.class);

//attach same string and send it with the intent
intent.putExtra("string", extraFromAct1);
startActivity(intent);

Dans votre classe RatingDescriptionSearchActivity, procédez comme suit:

String extraFromAct1 = getIntent().getStringExtra("string");
3
Razgriz

Activité principale

public class MainActivity extends Activity {

    EditText user, password;
    Button login;

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

        user = (EditText) findViewById(R.id.username_edit);
        password = (EditText) findViewById(R.id.edit_password);
        login = (Button) findViewById(R.id.btnSubmit);
        login.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,Second.class);

                String uservalue = user.getText().toString();
                String name_value = password.getText().toString();
                String password_value = password.getText().toString();

                intent.putExtra("username", uservalue);
                intent.putExtra("password", password_value);
                startActivity(intent);
            }
        });
    }
}

Deuxième activité dans laquelle vous souhaitez recevoir des données

public class Second extends Activity{

    EditText name, pass;
    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_activity);

        name = (EditText) findViewById(R.id.editText1);
        pass = (EditText) findViewById(R.id.editText2);

        String value = getIntent().getStringExtra("username");
        String pass_val = getIntent().getStringExtra("password");
        name.setText(value);
        pass.setText(pass_val);
    }
}
2

dans FirstActivity:

Intent sendDataToSecondActivity = new Intent(FirstActivity.this, SecondActivity.class);
sendDataToSecondActivity.putExtra("USERNAME",userNameEditText.getText().toString());
sendDataToSecondActivity.putExtra("PASSWORD",passwordEditText.getText().toString());
startActivity(sendDataToSecondActivity);

dans SecondActivity

Dans onCreate()

String userName = getIntent().getStringExtra("USERNAME");
String passWord = getIntent().getStringExtra("PASSWORD");
1
Ramesh Bandari

J'aime utiliser ce code propre pour ne transmettre qu'une valeur:

startActivity(new Intent(context, YourActivity.class).putExtra("key","value"));

Cela simplifie l’écriture et la compréhension du code.

0
Daniel Beltrami