在函数SetIntent中,我初始化了对象inputIntent,inputIntent和emailIntent都是相同的指针。
为什么obj emailIntent为null并显示“Error”?
Intent emailIntent=null;
Utility.SetIntent(getApplicationContext(),emailIntent, myindex);
if (emailIntent==null){
Toast.makeText(getApplicationContext(),"Error" ,Toast.LENGTH_SHORT).show();
}
public static final String MyIntent=Intent.ACTION_SEND_MULTIPLE;
public static final String MySetType="image/*";
public static void SetIntent(Context mycontext, Intent inputIntent, int index) {
inputIntent = new Intent(MyIntent);
inputIntent.setType(MySetType);
PackageManager pm = mycontext.getPackageManager();
List<ResolveInfo> emailers = pm.queryIntentActivities(inputIntent, 0);
int dbIndex=index-1;
if (
((dbIndex)<= (emailers.size()-1))
&&
((dbIndex)>=0)
)
{
ResolveInfo r = emailers.get(dbIndex);
inputIntent.setClassName(r.activityInfo.packageName, r.activityInfo.name);
Toast.makeText(mycontext,r.activityInfo.packageName+" "+r.activityInfo.name ,Toast.LENGTH_SHORT).show();
}
}
答案 0 :(得分:1)
从中返回修改后的意图对象 Utility.SetIntent(getApplicationContext(),emailIntent,myindex)方法。您期望如何更改Utility类中的emailIntent? java中没有指针。
因此,您在Utility中的方法必须是:
public static Intent SetIntent(Context,Intent,int){ //你的代码就在这里 //你的代码就在这里 }
emailIntent = Utility.SetIntent(getApplicationContext(),emailIntent,myindex);
并且,考虑到逻辑,您无需将意图传递给setIntent方法。在SetIntent方法中创建一个本地intent对象并返回它。
注意:强> 请遵循命名约定。 SetIntent()应该是setIntent()。