2012-02-16 3 views
0

У меня есть деятельность под названием CForm. Я бы назвал CGForm результатом. После того, как я получу результат, начните другое действие. Проблема в том, что когда я запускаю метод detail_click, он выполняет CGFORM, но не ждет установки результата в форме, он переходит на CDFORM.Активность не дожидаясь результата

вот код для CForm:

////////////////////////////CForm///////////////////////// 
    public boolean details_click() 
     { 
      if(listview.getCheckedItemPosition()>=0) 
      { 
       ArrayList<ComandaClass> listcompos = CClass.C(); 

       int gestiuneId = 0; 
       if ((configurare.bAlCom) && (listcompos.size() == 0)) 
       { 
        StocClass.setComandaContextForDB(this); 
        listGest = StocClass.Gestiuni_Get(); 
        if (listGest.size() > 1) 
        { 
          Intent intent = new Intent(); 
         intent.setClass(CForm.this,CGForm.class); 
         startActivityForResult(intent,GET_CODE);//here i would like to get back the result from CGForm 

         dGeid=getGIdResult; 
        } 
       } 

       boolean tof = true; 
       if ((configurare.bGCom) && (gestiuneId == -1)) 
        tof = false; 
       if (tof) 
       { 
         dCid=listCom.get(listview.getCheckedItemPosition()).getCId(); 
        dClid=listCom.get(listview.getCheckedItemPosition()).getClId(); 
        dF=listCom.get(listview.getCheckedItemPosition()).getF(); 

         Intent intent = new Intent(); 
        intent.setClass(CForm.this,CDForm.class); 
        startActivity(intent); 
       } 
       return true; 
      } 
      else 
      { 
       Toast.makeText(this, "X", 5000).show(); 
       return false; 
      } 

     } 

     public static int getGIdResult=-1; 
     @Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent data) 
     { 


      if (requestCode == GET_CODE) 
      { 
       if (resultCode == RESULT_OK) 
       { 
        getGIdResult=data.getIntExtra("GIdResult",-1); 
       } 
       else 
       { 
        getGIdResult=-1; 
       } 
      } 
      super.onActivityResult(requestCode, resultCode, data); 
     } 

CGFORM код:

////////////////////CGForm////////////////// 
     public class CGForm extends Activity 
{ 
    public static ArrayList<StocClass> listG=null; 
    public static int gid; 
    ListView listview=null; 
    Button btnOK=null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.comenzigestiuni); 

     Locale locale = new Locale("en"); 
     Locale.setDefault(locale); 
     Configuration config = new Configuration(); 
     config.locale = locale; 
     getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics()); 

     listview=(ListView)findViewById(R.id.listViewDG); 

     listG = CForm.listGest; 

     CG_Load(); 
    }//oncreate 
    private void CG_Load() 
    { 
    //..adding data to listview 
      btnOK=(Button)findViewById(R.id.menuItemOk); 
      btnOK.setOnClickListener(new OnClickListener() 
      { 
      public void onClick(View v) 
      { 
       if (listview.getCheckedItemPosition() >= 0) 
       { 
        gestiuneid = listG.get(listview.getCheckedItemPosition()).getGId(); 

        Intent intent = new Intent(); 
        intent.putExtra("GIdResult", gestiuneid); 
        setResult(RESULT_OK, intent); 

        finish(); 
       } 
      } 
      }); 
    }//CG_Load 

    @Override 
    protected void onStop() 
    { 
     gestiuneid=-1; 

     Intent intent = new Intent(); 
     intent.putExtra("GIdResult", gestiuneid); 
     setResult(RESULT_OK, intent); 

     super.onStop(); 
    } 

} 

благодаря расширенный!

ответ

1

Ни startActivity(), ни startActivityForResult() блокируют вызовы. Все, что должно быть сделано после получения результата, должно перейти к вашему методу onActivityResult().

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