【问题标题】:How To differentiate two different Intent to same activity?如何区分两个不同的 Intent 到相同的活动?
【发布时间】:2017-09-08 15:05:50
【问题描述】:

我是 android 开发的新手,我需要将意图区分为同一活动的两个不同意图,让我清楚地解释一下,当用户按下该按钮时,我有一个按钮,它将触发其他活动,在该活动中,它将携带一些基于用户的意图值将基于该输入值我将从我从意图触发意图的地方填充列表视图假设如果用户从那里按下列表视图如何通过一些额外的意图值传递意图以及如何区分接收活动中的两个意图是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);
                }
            }

现在我的问题是如何区分两种意图,一种是按钮单击,另一种是单击列表视图,以及如何在接收活动时区分它??

【问题讨论】:

    标签: android android-intent


    【解决方案1】:

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

    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
    }
    

    【讨论】:

    • 不错的解决方案。您是否建议使用 getIntent() 检查每个是否为 null?
    【解决方案2】:

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

    intent.putExtra("isFromOptionsMenu",true);
    

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

    【讨论】:

      【解决方案3】:

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

      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
          }
      

      【讨论】:

        【解决方案4】:

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

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

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

        在其他活动中

        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
            }
        

        【讨论】:

        • 我了解这些方法。你能为每个人提供一个例子吗?
        猜你喜欢
        • 2020-09-06
        • 2015-11-19
        • 1970-01-01
        • 2013-10-21
        • 1970-01-01
        • 2019-10-15
        • 1970-01-01
        • 1970-01-01
        • 2011-12-29
        相关资源
        最近更新 更多