2013-08-01 100 views
-1

在函数SetIntent中,我初始化了对象inputIntent,inputIntent和emailIntent都是相同的指针。
为什么obj emailIntent为null并显示“Error”?从 Utility.SetIntent(getApplicationContext(),emailIntent,myindex)方法为什么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(); 
    } 

    } 
+1

嗯,你把它设置为null,对吧? 'emailIntent = null;'? – g00dy

+0

显示您的完整代码和日志,请 – yushulx

+0

我必须首先设置emailIntent = null,如果不是,我将得到错误 本地变量emailIntent可能未初始化\t!但是我调用了函数Utility.SetIntent来初始化emailIntent。 – HelloCW

回答

1

返回修正的意向对象。你希望如何改变Utility类中的emailIntent? 在java中没有指针。

所以,你在实用方法是:

公共静态意向SetIntent(上下文,意图,INT){// 你的代码放在这里 //你的代码放在这里 }

emailIntent = Utility.SetIntent(getApplicationContext(),emailIntent,myindex);

而且,作为逻辑考虑,您不需要将意图传递给setIntent方法。在SetIntent方法中创建一个本地意图对象并返回相同的结果。

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