为什么obj emailIntent为null?

时间:2013-08-01 08:36:02

标签: android

在函数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();
    }

    }

1 个答案:

答案 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()。