2013-08-01 2 views
-1

В функции SetIntent я инициализировал объект inputIntent, как inputIntent, так и emailIntent - это тот же указатель.
Почему obj emailIntent не отображается и отображается «Ошибка»?Почему obj emailIntent null?

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

Ну, вы устанавливаете его на нуль, не так ли? 'emailIntent = null;'? – g00dy

+0

показать полный код и журнал, пожалуйста – yushulx

+0

Я должен установить emailIntent = null, если нет, я получу ошибку Локальная переменная emailIntent, возможно, не была инициализирована \t! Но я вызываю функцию Utility.SetIntent для инициализации emailIntent. – HelloCW

ответ

1

обратный модифицированное намерение объект из Utility.SetIntent методы (getApplicationContext(), emailIntent, myindex). Как вы ожидаете изменить emailIntent внутри класса Utility? В java нет указателей.

Таким образом, ваш метод в утилите должен быть:

общественности статической Намерение SetIntent (контекст, Намерение, Int) {// код здесь идет // ваш код здесь идет }

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

И, как считается логика, вам не нужно передавать намерение методу setIntent. Создайте локальный объект намерения в методе SetIntent и верните его.

ПРИМЕЧАНИЕ: Следуйте соглашениям об именах. SetIntent() должен быть установленIntent().

Смежные вопросы