Android 如何区分同一活动的两种不同意图?

Android 如何区分同一活动的两种不同意图?,android,android-intent,Android,Android Intent,我是android开发的新手,我需要区分两种不同的意图同一个活动让我解释清楚,当用户按下该按钮时,我有一个按钮,它将触发其他活动,其中它将携带一些来自那里的意图值。基于此,用户将输入值,我将从我触发的位置填充listview如果用户从那里按下listview,那么如何通过一些额外的意图值传递意图,以及如何在接收活动中区分两个意图是什么 at i have tried so far: @Override public boolean onOptionsItemSelected(M

我是android开发的新手,我需要区分两种不同的意图同一个活动让我解释清楚,当用户按下该按钮时,我有一个按钮,它将触发其他活动,其中它将携带一些来自那里的意图值。基于此,用户将输入值,我将从我触发的位置填充listview如果用户从那里按下listview,那么如何通过一些额外的意图值传递意图,以及如何在接收活动中区分两个意图是什么

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);
这是我将从listview中选择的值,这是另一组值。在接收活动中,我如何尝试区分意图:

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区分按钮点击和其他两种意图,以及如何在接收活动中区分这两种意图???

在包中传递布尔参数,如下所示:

intent.putExtra("isFromOptionsMenu",true);

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

在包中传递布尔值参数,如下所示:

intent.putExtra("isFromOptionsMenu",true);

然后在receiving activity(接收活动)中,选中此布尔值。

像这样放置一个包含两个目的的字符串

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

现在在另一个活动中

    if(getIntent().getStringExtra("from").equals("button"))
{  //do here
}else if(getIntent().getStringExtra("from").equals("listview"))
{   // do here
}
intent.putExtra("Name","activity2");

把一个字符串放在两个字符上,如下所示

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

现在在另一个活动中

    if(getIntent().getStringExtra("from").equals("button"))
{  //do here
}else if(getIntent().getStringExtra("from").equals("listview"))
{   // do here
}
intent.putExtra("Name","activity2");

在调用活动时,只需将活动的名称发送给接收活动,如

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
    }

在调用活动时,只需将活动的名称发送给接收活动,如

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
    }

只需在intent中输入额外的布尔值或活动名称或整数,这有助于区分活动

首先提取标记,然后在此基础上提取其他信息

intent.putExtra("Name","activity1");
在其他一些活动中

    if(getIntent().getStringExtra("from").equals("button"))
{  //do here
}else if(getIntent().getStringExtra("from").equals("listview"))
{   // do here
}
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
    }

只需在intent中输入额外的布尔值或活动名称或整数,这有助于区分活动

首先提取标记,然后在此基础上提取其他信息

intent.putExtra("Name","activity1");
在其他一些活动中

    if(getIntent().getStringExtra("from").equals("button"))
{  //do here
}else if(getIntent().getStringExtra("from").equals("listview"))
{   // do here
}
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
    }

很好的解决方案。您是否建议使用getIntent()检查每个属性的null?这是一个不错的解决方案。您是否建议使用getIntent()检查每种方法的null值?我了解这些方法。你能为每种方法提供一个例子吗?我理解这些方法。你能为每一个提供一个例子吗?