Нить все еще работает, когда его называют еще один фрагмент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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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