Перезапустите диалог из другого действия

У меня небольшая проблема, у меня есть диалог в одном действии с настраиваемым списком, который динамически генерируется с 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. Извините, если вы нашли опечатку синтаксиса.

Другие вопросы по тегам