活动不等待结果

时间:2012-02-16 17:29:59

标签: java android

我有一项名为CForm的活动。我想把结果称为CGForm。在我得到结果后开始另一项活动。问题是,当我启动details_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 个答案:

答案 0 :(得分:1)

startActivity()startActivityForResult()都没有阻止来电。收到结果后应该完成的任何操作都需要转移到onActivityResult()方法。