mi proyecto se enfrentan al problema, como no pueda pasar el valor de la Textview firstActivity (MainActivity) a secondActivity TextView (profileActivity).
es la razón por la que yo solía BackgroundWorker (AsyncTask) por lo que no puede dirigir pasar los datos?
BackgroundWorker (AsyncTask) es la clase Java para interactuar entre la base de datos MySQL y el propósito del estudio androide.
referencias: Referencias AsyncTask
si el método de intención no se puede utilizar con AsyncTask backgound clase, por lo que el método que debo hacer referencia a?
a continuación es MainActivity (actividad de inicio de sesión AKA) y texto en negrita es la parte intención:
import ....;
public class MainActivity extends AppCompatActivity {
Button _button;
EditText usernamelogin, passwd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_button=findViewById(R.id.button);
usernamelogin =findViewById(R.id.usernamelogin);
passwd = findViewById(R.id.passwd);
}
public void OnLogin(View view){
String user_name = usernamelogin.getText().toString();
String pass_word = passwd.getText().toString();
String type = "login";
BackgroundTask backgroundTask = new BackgroundTask(this);
backgroundTask.execute(type, user_name, pass_word);
Intent intent = new Intent(MainActivity.this,ProfileActivity.class);
intent.putExtra("userprofilename",_usernamelogin.getText().toString());
}
}
}
Intento = intención nuevos intención (MainActivity.this, ProfileActivity.class); intent.putExtra ( "NombreDePerfilDeUsuario", _ usernamelogin.getText toString () ().);
A continuación se SecondActivity:
import......;
public class ProfileActivity extends AppCompatActivity {
TextView logouttxt;
TextView profilename;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
profilename=(TextView)findViewById(R.id.userproname);
logouttxt =findViewById(R.id.logouttxt);
profilename.setText(getIntent().getStringExtra("userprofilename"));
}
}
profilename.setText (. getIntent () getStringExtra ( "NombreDePerfilDeUsuario"));
a continuación es mi (AsyncTask) BackgroundWorker clase:
import .....;
public class BackgroundTask extends AsyncTask<String, Void, String> {
Context context;
AlertDialog alertDialog;
BackgroundTask(Context ctx){
context=ctx;
}
@Override
protected String doInBackground(String...params) {
String type = params[0];
String loginURL ="http://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
if(type.equals("login")) {
try {
String user_name = params[1];
String pass_word = params[2];
URL url = new URL(loginURL);
HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
OutputStream outputStream = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
String login_data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(user_name, "UTF-8") + "&"
+ URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(pass_word, "UTF-8");
bufferedWriter.write(login_data);
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));
String result="";
String line="";
while((line = bufferedReader.readLine())!= null) {
result += line;
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
return result;
} catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPreExecute() {
alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("Login Status");
}
@Override
protected void onPostExecute(String result) {
alertDialog.setMessage(result);
if(result.contentEquals("Login Success")) {
Toast.makeText(context, "Login Successfully!", Toast.LENGTH_SHORT).show();
context.startActivity(new Intent(context, ProfileActivity.class));
}else
{
Toast.makeText(context, "Login Fail!", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
}
Gracias.
Si desea que la onPostExecute
llamada para pasar el nombre de usuario a la siguiente actividad que tiene que añadirlo como un extra allí.
public class BackgroundTask extends AsyncTask<String, Void, String> {
Context context;
AlertDialog alertDialog;
private String user_name = ""; // <-- STORE THE USER NAME
BackgroundTask(Context ctx){
context=ctx;
}
@Override
protected String doInBackground(String...params) {
String type = params[0];
String loginURL ="http://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
if(type.equals("login")) {
try {
user_name = params[1]; // <--- SET THE MEMBER VARIABLE
String pass_word = params[2];
// do stuff
return result;
} catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String result) {
if(result != null && result.contentEquals("Login Success")) {
Toast.makeText(context, "Login Successfully!", Toast.LENGTH_SHORT).show();
// ADD THE STORED USER NAME TO THE INTENT
Intent i = new Intent(context, ProfileActivity.class);
i.putExtra("userprofilename",user_name);
context.startActivity(i);
}
else {
Toast.makeText(context, "Login Fail!", Toast.LENGTH_SHORT).show();
}
}
}