-1

在函数SetIntent中,我已经初始化了对象inputIntent,inputIntent和emailIntent都是同一个指针。
为什么 obj emailIntent 为空并显示“错误”?

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

    }
4

1 回答 1

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 方法中创建一个本地意图对象并返回它。

注意: 请遵循命名约定。SetIntent() 应该是 setIntent()。

于 2013-08-01T09:21:35.477 回答