如何将两种不同的意图区分为相同的活动?

时间:2016-06-14 06:49:23

标签: android android-intent

新的Android开发我需要区分意图两个不同的意图相同的活动让我解释清楚我有一个按钮当用户按下该按钮它将触发其他活动,其中它将携带来自那里的用户的一些意图值将根据我将填充列表视图来输入值,我将从中触发意图,如果用户按下listview,那么如何通过一些额外的意图值传递意图以及如何在接收活动中区分两个意图是wh

at i have tried so far:




 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // handle item selection
        switch (item.getItemId()) {
            case R.id.add:
                int id=timertrackerdao.getNotesCount();
                if(id>0){
                    Toast.makeText(getContext().getApplicationContext()," Please Finish The Pending Visit",Toast.LENGTH_SHORT).show();
                }
                else {
                    Intent intent = new Intent(getActivity().getApplicationContext(), AddNotes.class);
                    intent.putExtra("taskid",taskid);
                    intent.addFlags(0);
                    startActivityForResult(intent, 1);
                }}
        return super.onOptionsItemSelected(item);
    }

这是我将从菜单栏

触发意图的地方
Intent intent = new Intent(getActivity().getApplicationContext(), AddNotes.class);
                    Bundle bundle=new Bundle();
                    bundle.putInt("addnoteid",id);
                    bundle.putInt("taskid",taskid);
                    bundle.putString("checkin",checkin);
                    intent.addFlags(1);
                    startActivityForResult(intent, 1);

这是我将从列表视图中选择值的地方,这是另一组值。在接收活动中,我试图区分意图:

Intent intent=getIntent();
            if(intent.getFlags()==0) {
                if (intent != null) {
                    taskid = intent.getIntExtra("taskid", 0);
                }
            }
    else {
                Bundle extras = getIntent().getExtras();
                if (extras != null) {
                    check.setEnabled(false);
                    //  TaskID=extrass.getInt("noteid");
                    id = extras.getInt("addnoteid");
                    date = extras.getString("checkin");
                    TaskID = extras.getInt("taskid");
                    createNotification(date);
                    AddNote(id);
                }
            }

现在我的问题是如何通过单击listview来区分两个意图的按钮点击和另一个,以及如何在接收活动中区分它?

4 个答案:

答案 0 :(得分:3)

放一个像这样的意图的字符串

intent.putExtra("from","button");

intent.putExtra("from","listview");

现在进行另一项活动

    if(getIntent().getStringExtra("from").equals("button"))
{  //do here
}else if(getIntent().getStringExtra("from").equals("listview"))
{   // do here
}

答案 1 :(得分:1)

在bundle中传递一个布尔参数,如下所示:

intent.putExtra("isFromOptionsMenu",true);

然后在接收活动时,检查此布尔值。

答案 2 :(得分:0)

在呼叫活动中,只需将活动名称发送到接收活动,如

intent.putExtra("From", "Activity_Name");

并且在接收活动中区分为

 Bundle bundle = getIntent().getExtras();
    if (bundle != null) {
    from = bundle.getString("From");
    }
    if (from == "Activity_Name") {    
//first activity
    }
    else{
//second activity
    }

答案 3 :(得分:0)

只需添加额外的布尔或活动名称或意图中的整数即可帮助您区分活动。

首先提取标记然后根据提取的其他信息。

intent.putExtra("Name","activity2");

在其他一些活动中

Intent intent = getIntent();
Bundle extras = intent.getExtras();

if(extras != null){
    String name =  extras.getString("Name");
    if(name.equals("activity1")){
       // do something
    }else{
       // do something else
    }

接收活动:

     $gridDataProvider = new CArrayDataProvider($cap_detail);
        //$this->print_data($gridDataProvider);
        $gridColumns = array(
            array('name'=>'reason_desc', 'header'=>'Reason Description'),
            array('name'=>'filed_by_name', 'header'=>'Filed By', 'htmlOptions' => array('style'=>'width:20%')),
            array('name'=>'filled_date', 'header'=>'Filed Date', 'htmlOptions' => array('style'=>'width:10%')),
        );