2013-08-01 144 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()。