【问题标题】:Why startActivityForResult not working?为什么 startActivityForResult 不起作用?
【发布时间】:2016-03-02 07:23:51
【问题描述】:

我正在使用 startActivityForResult 将值从 Activity B 返回到 Activity A。但是当点击B中的保存button时,并没有返回到Activity A。有人可以帮我解决问题吗?

活动 B

  save.setOnClickListener(new View.OnClickListener()
        {  // return values to previous activity
            @Override
            public void onClick(View v)
            {
                Intent returnIntent=new Intent();
                Project=project.getSelectedItem().toString();
                Description=description.getText().toString();
                progress=seekBar.getProgress();
                returnIntent.putExtra("Project",Project);
                returnIntent.putExtra("Description", Description);
               returnIntent.putExtra("progress",progress);
                returnIntent.putExtra("TimeIn", TimeIn);
                returnIntent.putExtra("TimeOut",TimeOut);
                setResult(Activity.RESULT_OK,returnIntent);
                Log.e("d","d");

            }
        });

活动 A

     public static final int PROJECT_REQUEST_CODE = 1;
      public static final int CAMERA_REQUEST_CODE = 2;

  @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.addDetails:
                View menuItemView = findViewById(R.id.addDetails); 
                PopupMenu po = new PopupMenu(this, menuItemView); //for drop-down menu
                po.getMenuInflater().inflate(R.menu.popup_details, po.getMenu());
                po.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                    public boolean onMenuItemClick(MenuItem item) {
                        Toast.makeText(getApplication(), "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show();
                        if ("Add Work Details".equals(item.getTitle())) {
                            Intent intent = new Intent(getApplication(), Add_Details_Information.class);  // go to B
                            startActivityForResult(intent, PROJECT_REQUEST_CODE);
                        }
                        return true;
                    }
                });
                po.show(); //showing popup menu
        }
        return super.onOptionsItemSelected(item);

    }

        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) { // receive from B
           if(requestCode==PROJECT_REQUEST_CODE)
           {
                    ReceiveProject = data.getStringExtra("Project");
                    ReceiveDescription = data.getStringExtra("Description");
                    ReceiveProgress = data.getStringExtra("progress");
                    ReceiveTimeIn = data.getStringExtra("TimeIn");
                    ReceiveTimeOut = data.getStringExtra("TimeOut");

                    ArrayList<SearchResults> searchResults = GetSearchResults(weather, date, status, ReceiveTimeIn, ReceiveTimeOut);
                    listview.setAdapter(new MyCustomBaseAdapter(this,searchResults));
            }
            else if(requestCode==CAMERA_REQUEST_CODE)
           {

           }
        }

【问题讨论】:

    标签: android arraylist startactivityforresult


    【解决方案1】:

    在活动 B 中调用 setResult 后,您还没有完成活动。请确保调用 finish()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      相关资源
      最近更新 更多