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