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 ::
{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);
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");
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")
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);
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");
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);
}
}
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");
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.