2014-02-20 2 views
0

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

+0

Чтобы получить дополнительную помощь, я должен был использовать метод, который я использую для вызова диалога, поэтому я обновил свой вопрос с ним – Camadas

+0

Хорошо, пожалуйста, введите код, через который вы начинаете 2-ое действие, и код, который вы вызываете при отмене нажата на 2-ое действие. Я обновлю его согласно вашему требованию. – Adnan

+0

Спасибо за повтор, у меня есть редактирование, чтобы включить слушателя для кнопки отмены и для слушателя флажка – Camadas

Смежные вопросы