Je dois réaliser un projet ayant pour but d'afficher dans le MainActivity une ListView, dans cette ListView il y a les éléments d'un lien rss en .xml. J'arrive à obtenir les Items du lien dans ma ListView sauf que maintenant je voudrais que l'utilisateur puisse mettre le lien de son choix dans un EditText dans une nouvelle activité. Dans cette nouvelle activité (que j'ai appelé SettingsActivity), il y a donc un EditText avec un bouton "Appliquer". Je voudrai que lorsque l'utilisateur appuie sur le bouton appliquer, le contenu du lien qu'il a au préalable taper dans le EditText se retrouve dans ma ListView dans mon MainActivity. Ça fait pas mal de temps que je bloque dessus et je ne comprends pas comment je peux résoudre ce problème.
Voici ci-joint des extraits de mon code :
package com.example.myapplication;
//Import
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ListView;
import java.util.List;
public class MainActivity extends SettingsActivity {
public EditText EditText;
public AlertDialog alertDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Intent intent = getIntent();
//if (intent != null) {
// String str = "";
// if (intent.hasExtra("edittext")) {
// str = intent.getStringExtra("edittext");
// }
// new LoaderTask().execute(str);
String url = ""; //lien de l'utilisateur
//String url = EditText.getText().toString(); // string du editText envoyé dans le thread loaderTask
// on lance le loadertask avec comme lien le string EditText
new LoaderTask().execute(url);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem Item) {
if (Item.getItemId() == R.id.settings) {
//lancer l'activité settings
Intent intent = new Intent(getApplicationContext(), SettingsActivity.class);
startActivity(intent);
return true;
}
return false;
}
});
FloatingActionButton fab = findViewById(R.id.bouton);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar.make(v, "Loading news", Snackbar.LENGTH_LONG).setAction("Action", null).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public class LoaderTask extends AsyncTask<String, String, List<Rssitem>> {
//private String PeopleURLexec;
// @Override
// protected void onPreExecute() {
// PeopleURLexec = PeopleURL.getText().toString();
// }
@Override
protected List<Rssitem> doInBackground(String... url) {
List<Rssitem> news = RssLoader.parse(url[0]);
return news;
}
@Override
protected void onPostExecute(List<Rssitem> news) {
super.onPostExecute(news);
ListView list = findViewById(R.id.listView);
RssAdapter adapter = new RssAdapter(getApplicationContext(), news);
list.setAdapter(adapter);
}
}
}
SettingsActivity
package com.example.myapplication;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class SettingsActivity extends AppCompatActivity {
public Button Apply;
public EditText EditText;
private String PeopleExecUrl;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_settings2);
super.onCreate(savedInstanceState);
Apply = (Button) this.findViewById(R.id.FeedButton);
EditText = (EditText) this.findViewById(R.id.rssFeedEditText);
PeopleExecUrl = EditText.getText().toString();
Apply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//AsyncTask newTask = new MainActivity3.LoaderTask().execute(PeopleExecUrl); // lancement de LoaderTask lorsque l'on appuie sur le bouton appliquer
startActivity(new Intent(SettingsActivity.this, MainActivity.class));
}
});
//class url extends MainActivity {
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// setContentView(R.layout.activity_settings2);
// super.onCreate(savedInstanceState);
// Apply = (Button) this.findViewById(R.id.FeedButton);
// EditText = (EditText) this.findViewById(R.id.rssFeedEditText);
// PeopleExecUrl = EditText.getText().toString();
// Apply.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// //AsyncTask newTask = new MainActivity.LoaderTask().execute(PeopleExecUrl); // lancement de LoaderTask lorsque l'on appuie sur le bouton appliquer
// startActivity(new Intent(SettingsActivity.this, MainActivity.class));
// }
// });
// }
//}
}
//@Override
//protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_settings2);
// Apply = (Button) this.findViewById(R.id.FeedButton);
// Apply.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// new MainActivity.LoaderTask().execute();
// }
// });
//}
}
Effectivement, j'ai du mal à passer le lien d'une activité à une autre, j'ai également du mal pour réceptionner mon EditText pour ensuite l'ajouter la la liste !
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Ne pas oublier de mettre le sujet en "Résolu" si celui-ci l'est.
Ne pas oublier de mettre le sujet en "Résolu" si celui-ci l'est.