Перезапустите диалог из другого действия
У меня небольшая проблема, у меня есть диалог в одном действии с настраиваемым списком, который динамически генерируется с 1 текстовым представлением и 1 флажком в каждой строке.
Когда я нажимаю флажок, он открывает другое действие для настройки чего-либо, но если я нажимаю кнопку отмены в этом действии, я хочу, чтобы при возврате к действию предварительного просмотра, чтобы флажок отсутствовал, так как я отменил Это.
Итак, как я могу перезапустить диалог с 1 действия из основного действия?
РЕДАКТИРОВАТЬ
public void corredialogo()
{
CliInfo cliente = GlobalVars.getClientes_Info().get(GlobalVars.get_selected_client()+"");
if (!cliente.ultartigos.isEmpty())
{
LayoutInflater inflater = LayoutInflater.from(context);
View vi = inflater.inflate(R.layout.ultimosart, null);
AlertDialog.Builder alert = new AlertDialog.Builder(context);
alert.setView(vi);
AlertDialog OptionDialog = alert.create();
produtos = (ListView) vi.findViewById(R.id.ultprodutos);
ArrayAdapter<LastArt> adapter = new UltimosArtAdapter((Activity) context, cliente.getultimosart());
produtos.setAdapter(adapter);
OptionDialog.show();
}
else
{
GlobalFunctions.toast_message(getApplicationContext(), getString(R.string.nullUltimos));
}
}
РЕДАКТИРОВАТЬ 2
Слушатель для галочки
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
element = (LastArt) viewHolder.checkbox.getTag();
GlobalVars.ultiQtd = element.getQtd();
if (!GlobalVars.get_encomenda_produtos().containsKey(element.getId_Art()))
{
if(buttonView.isChecked() && element.getSelected() == false)
{
GlobalVars.setActive_product_id(element.getId_Art());
element.setSelected(buttonView.isChecked());
Intent myIntent = new Intent();
myIntent.setClass(context, ProdConfig.class);
context.startActivity(myIntent);
}
}
}
Слушатель для кнопки отмены на втором занятии
cancelar.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Activity.prodsearch.setText("");
GlobalVars.getClientes_Info().get(GlobalVars.get_selected_client()+"").
deselArt(GlobalVars.getActive_product_id()); // Put false on the prod
finish();
}
});
1 ответ
startActivityForResult
вместо startActivity
, Затем снова откройте диалог onActivityResult
в первой деятельности.
Пример: я принял имена действий как FirstActivity и SecondFirstActivity .
// first, close your dialog
// calling SecondActivity from FirstActivity on some event i.e checking a checkbox
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1); // 1 is your request code
// In SecondActivity , on cancel pressed
setResult(RESULT_CANCELED);
finish();
// Again in FirstActivity
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_CANCELED){
//Write your code in case SecondActivity send CANCEL response
corredialogo();// display dialog
}
if (resultCode == RESULT_OK) {
//Write your code in case some result has been sent by SecondActivity
}
}
Надеюсь, это поможет.
================================================== ==================
Вот ваш модифицированный код.
AlertDialog OptionDialog=null;
public void corredialogo()
{
CliInfo cliente = GlobalVars.getClientes_Info().get(GlobalVars.get_selected_client()+"");
if (!cliente.ultartigos.isEmpty())
{
LayoutInflater inflater = LayoutInflater.from(context);
View vi = inflater.inflate(R.layout.ultimosart, null);
AlertDialog.Builder alert = new AlertDialog.Builder(context);
alert.setView(vi);
OptionDialog = alert.create();
produtos = (ListView) vi.findViewById(R.id.ultprodutos);
ArrayAdapter<LastArt> adapter = new UltimosArtAdapter((Activity) context, cliente.getultimosart());
produtos.setAdapter(adapter);
OptionDialog.show();
}
else
{
GlobalFunctions.toast_message(getApplicationContext(), getString(R.string.nullUltimos));
}
}
//The listener for the checkbox
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
element = (LastArt) viewHolder.checkbox.getTag();
GlobalVars.ultiQtd = element.getQtd();
if (!GlobalVars.get_encomenda_produtos().containsKey(element.getId_Art()))
{
if(buttonView.isChecked() && element.getSelected() == false)
{
GlobalVars.setActive_product_id(element.getId_Art());
element.setSelected(buttonView.isChecked());
Intent myIntent = new Intent();
myIntent.setClass(context, ProdConfig.class);
context.startActivityForResult(myIntent,1);
OptionDialog.cancel();
}
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_CANCELED){
//Write your code in case SecondActivity send CANCEL response
corredialogo();// display dialog
}
if (resultCode == RESULT_OK) {
//Write your code in case some result has been sent by SecondActivity
}
}
Слушатель для кнопки отмены на втором занятии
cancelar.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Activity.prodsearch.setText("");
GlobalVars.getClientes_Info().get(GlobalVars.get_selected_client()+"").
deselArt(GlobalVars.getActive_product_id()); // Put false on the prod
setResult(RESULT_CANCELED);
finish();
}
});
Я не редактировал его в любой IDE. Извините, если вы нашли опечатку синтаксиса.