Нить все еще работает, когда его называют еще один фрагментAndroid

Форум для тех, кто программирует под Android
Anonymous
Нить все еще работает, когда его называют еще один фрагмент

Сообщение Anonymous »

У меня есть поток, работающий на фрагменте a, и когда я назвал второй фрагмент, предположительно, фрагмент a должен был назвать метод Onpause (), где я останавливаю поток, но поток все еще работает, потому что у меня есть тост на первом фрагменте, показывающий сообщение, если у меня есть на фрагменте, и это показывает на фрагменте b, дайте вам код. public class FragmentoPrincipalChofer extends ListFragment {
private List mPedido;
private List mViaje;
private List mUrlUsuario;
private ListView mLista;
private Runnable r;
final Handler handler = new Handler();
private String mChoferActual;
private String mPassChofer;
private AdaptadorDatosListviewChofer adaptador;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View x = inflater.inflate(R.layout.fragmento_principal_chofer, container, false);
mLista = (ListView)x.findViewById(android.R.id.list);

SharedPreferences pref = getContext().getSharedPreferences("login", 0);
mChoferActual= pref.getString("usuario","");
mPassChofer= pref.getString("pass","");

ParseUser.logInInBackground(mChoferActual, mPassChofer, new LogInCallback() {
public void done(ParseUser user, ParseException e) {
if (user != null) {
// Hooray! The user is logged in.
} else {
// Signup failed. Look at the ParseException to see what happened.
}
}
});

return x;
}

@Override
public void onResume() {
super.onResume();

// logica de recibir pedidos

final ProgressDialog dialogoProgreso = new ProgressDialog(getContext());
dialogoProgreso.setTitle("Cargando");
dialogoProgreso.setMessage("Buscando Pedidos");
dialogoProgreso.setCancelable(false);
dialogoProgreso.show();

r = new Runnable() {
public void run() {

handler.postDelayed(r, 10000);

//obtener pedido de taxi

ParseQuery query = ParseQuery.getQuery("Pedido");
query.whereEqualTo("chofer", mChoferActual);
query.addDescendingOrder("createdAt");
query.findInBackground(new FindCallback() {
public void done(List pedido, com.parse.ParseException e) {
if (e == null) {

if(pedido.size()==0){
dialogoProgreso.cancel();

Toast.makeText(getContext(), "prueba", Toast.LENGTH_LONG).show();

}else{

dialogoProgreso.cancel();
mPedido = pedido;
String[] nombreUsuarios = new String[mPedido.size()];
int i = 0;
for (ParseObject pedidos : mPedido) {

nombreUsuarios = pedidos.getString("cliente");
i++;

}

adaptador = new AdaptadorDatosListviewChofer(getListView().getContext(), mPedido);
setListAdapter(adaptador);

}

} else {

}
}
});

}
};
r.run();

ClickPedido();

}

// manejo de click sobre el pedido de taxi
public void ClickPedido() {

mLista.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view, final int position, long id) {
final String clienteSeleccionado = mPedido.get(position).get("cliente").toString();
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());

builder.setTitle("Confirmacion de pedido")
.setMessage("Esta seguro que desea tomar el pedido de " + clienteSeleccionado)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

adaptador.remove(mPedido.get(position));
adaptador.notifyDataSetChanged();

ParseQuery query2 = ParseQuery.getQuery("Pedido");
query2.whereEqualTo("cliente", clienteSeleccionado);
query2.getFirstInBackground(new GetCallback() {
public void done(ParseObject chofer, ParseException e) {
if (chofer == null) {
Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_LONG).show();
} else {

try {

ParseObject viaje = new ParseObject("Viaje");
viaje.put("chofer", mChoferActual);
viaje.put("cliente", chofer.get("cliente").toString());
viaje.saveInBackground();

chofer.delete();
chofer.saveInBackground();

Fragment fragment2 = new MapaChofer();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.replace(R.id.prueba2, fragment2).addToBackStack(null);
transaction.commit();

} catch (ParseException e1) {
e1.printStackTrace();
}

}
}
});

}

}

)
.setNegativeButton("CANCELAR",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {

}
}

);
builder.show();

}
}

);

}

@Override
public void onPause() {
super.onPause();
handler.removeCallbacks(r);
}

}
< /code>
Основной ящик, который управляет фрагментами: < /p>
public class DrawerPrincipal extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener,FragmentoPrincipalUsuario.OnFragmentInteractionListener {

private ParseFile mPrueba;
private Uri url;
private ImageView imagen;
private DrawerLayout mDrawerLayout;
private String mUsuarioActual;
public static final int CHOOSE_PIC_REQUEST_CODE = 1;
private Uri mMediaUri;
private ImageView mImagenPrevia;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawer_principal);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

SharedPreferences pref = getApplicationContext().getSharedPreferences("login", 0);
mUsuarioActual= pref.getString("usuario","");

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);

View hView = navigationView.inflateHeaderView(R.layout.nav_header_drawer_principal);
final ImageView imgvw = (ImageView)hView.findViewById(R.id.imagenPerfil);
final TextView tv = (TextView)hView.findViewById(R.id.nombreUsuarioV);
//Picasso.with(getBaseContext()).load(url.toString()).into(imgvw);
tv.setText("new text");

ParseQuery query3 = ParseUser.getQuery();
query3.whereEqualTo("username",mUsuarioActual);
query3.findInBackground(new FindCallback() {
public void done(List usuario, ParseException e) {
if (e == null) {

mPrueba = usuario.get(0).getParseFile("foto");
tv.setText(usuario.get(0).getUsername().toString());
url = Uri.parse(mPrueba.getUrl());
Picasso.with(getBaseContext()).load(url.toString()).transform(new RoundedTransformation(300, 4)).into(imgvw);

if (usuario.get(0).get("tipoUsuario").toString().equals("pasajero")) {
Fragment fragmento;
fragmento = new FragmentoPrincipalUsuario();
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_main, fragmento)
.commit();

}else {

Fragment fragmento;
fragmento = new FragmentoPrincipalChofer();
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_main, fragmento)
.commit();

}

} else {
// Something went wrong.
}
}
});

}

@Override
public void onBackPressed() {

DrawerLayout layout = (DrawerLayout)findViewById(R.id.drawer_layout);
if (layout.isDrawerOpen(GravityCompat.START)) {
layout.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
/*
if(getSupportFragmentManager().getBackStackEntryCount()!=0) {
getSupportFragmentManager().popBackStack();
}else{

super.onBackPressed();
}*/
}

/*
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.pantalla_principal_usuario, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}
*/
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();

if (id == R.id.cuenta) {

Fragment fragmento;
fragmento = new OpcionDrawerUsuario();
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_main, fragmento)
.addToBackStack(null)
.commit();

} else if (id == R.id.historial_viajes) {
Fragment fragmento;
fragmento = new FragmentoViajesAcumulados();
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_main, fragmento)
.addToBackStack(null)
.commit();

} else if (id == R.id.contacto) {
String emailAdress[] = {"gastondelacruz@gmail.com"};
Intent email= new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL,emailAdress);
email.putExtra(Intent.EXTRA_SUBJECT,"Pon aqui el motivo de tu mail");
email.setType("text/plain");
email.putExtra(Intent.EXTRA_TEXT,"Su mensaje");
startActivity(email);

} else if (id == R.id.compartir) {
String texto="https://www.google.com.ar/?gfe_rd=cr&ei ... gws_rd=ssl";
Intent intento= new Intent();
intento.setAction(Intent.ACTION_SEND);
intento.putExtra(Intent.EXTRA_TEXT, texto);
intento.setType("text/plain");
startActivity(intento);

} else if (id == R.id.version) {
String prueba="aceptar";
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("prueba") //
.setMessage("Esta es una prueba todavia no poseo el numero de version del producto") //
.setPositiveButton(prueba, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// TODO
dialog.dismiss();
}
}); //

builder.show();

} else if (id == R.id.salir) {
AlertDialog.Builder builder = new AlertDialog.Builder(DrawerPrincipal.this);
builder.setTitle("Cerrar Sesion")
.setMessage("Esta seguro que desea cerrar sesion actual?")
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ParseUser.logOut();
Intent intento = new Intent(getApplicationContext(), ActividadLogin.class);
intento.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intento.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intento);
finish();

}

}

)
.setNegativeButton("CANCELAR",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {

}
}

);
builder.show();

}

DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);mDrawerLayout.closeDrawer(GravityCompat.START);
return true;
}
}


Подробнее здесь: https://stackoverflow.com/questions/353 ... its-called

Вернуться в «Android»