secActivity有时只调用StartActivityForResult

时间:2013-01-22 14:59:47

标签: android android-listview

从onClickListener 调用 startActivityForResult时遇到一些问题。

在第一项活动中,我有2种方法可以启动startActivityForResult

  1. ListView OnItemClick() - 当我从startActivityForResult调用ListView OnItemClick()时,它正常工作

  2. ButtonOnClickListener() - 但是当我从Button OnClickListener()调用startActivityForResult时,第二个活动将从某个reasone开始OnActivityResult。 这是我的代码:

  3. *更新: 谢谢你的时间,你提供的是我已经尝试过的变化之一,但是它与我的新代码保持一致:

    首先使用StartActivityForResult()调用(工作正常! - 在OnCreate()内部):

    listView.setOnItemClickListener(new OnItemClickListener() 
        {
    
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id)
            {
                Intent intent = new Intent(NoteNames.this, EditNote.class);
                intent.putExtra("subject", noteList.get(position).getSubjectText());
                intent.putExtra("body", noteList.get(position).getBodyText());
                startActivityForResult(intent, position);
            }
    
    
        });
    

    第二个电话:不会启动OnActivityResult():

    @Override
    public void onClick(View v) {
    
        if(v.getId() == addButton.getId()){
            Intent intent = new Intent(NoteNames.this, EditNote.class);
            intent.putExtra("subject", "");
            intent.putExtra("body", "");
            startActivityForResult(intent, idOfNew);
        }
    
    }
    

    这是SecondActivity:

    private EditText subjectEditText, bodyEditText;
    private Button approve, decline;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_edit_note);
    
        subjectEditText = (EditText) findViewById(R.id.note_head);
        bodyEditText = (EditText) findViewById(R.id.note_text);
        approve = (Button) findViewById(R.id.approve_button);
        decline = (Button) findViewById(R.id.decline_button);
    
        Intent intent = getIntent();
        String subject = intent.getExtras().getString("subject");
        String body = intent.getExtras().getString("body");
    
        subjectEditText.setText(subject);
        bodyEditText.setText(body);
    
        Handler handler = new Handler();
        approve.setOnClickListener(handler);
        decline.setOnClickListener(handler);
    
        super.onCreate(savedInstanceState);
    }
    
    class Handler implements OnClickListener{
    
        @Override
        public void onClick(View v) {
    
    
    
             if (v.getId()==approve.getId()){
                 Intent intent = getIntent();
                 intent.putExtra("subject", String.valueOf(subjectEditText.getText()));
                 intent.putExtra("body", String.valueOf(bodyEditText.getText()));
                 setResult(RESULT_OK, intent);
                 finish();
             }
    
        }
    
    }
    

    }

1 个答案:

答案 0 :(得分:0)

编辑:在编辑问题之前,代码中写有final int idOfNew=-5。好吧,如果requestCode<0然后onActivityResult 被触发。使用请求代码>0(可能是按钮的ID),这应该可以解决您的问题。你代码中的其他所有内容都很好。