NullPointerException ... Почему? - PullRequest
       6

NullPointerException ... Почему?

1 голос
/ 04 ноября 2010

Пожалуйста, помогите мне ...

public class TestActivity extends PreferenceActivity {
/********/
            mTestPref = findPreference("test_preference");
            mTestPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

       @Override
       public boolean onPreferenceClick(Preference preference) {
        // TODO Auto-generated method stub
        String Message = mMessagePref.getSummary().toString();

        MainActivity main = new MainActivity();
        main.execute(Message);

        return true;
       }
     });
    }

    public class MainActivity extends Activity {
    /************/

     public void execute(String message) {

      Toast.makeText(getBaseContext(), message, Toast.LENGTH_SHORT).show(); // NullPointerExcepiton
     }
    }

11-04 16:50:12.317: ERROR/AndroidRuntime(19524): Uncaught handler: thread main exiting due to uncaught exception
11-04 16:50:12.356: ERROR/AndroidRuntime(19524): java.lang.NullPointerException
11-04 16:50:12.356: ERROR/AndroidRuntime(19524):     at android.widget.Toast.<init>(Toast.java:89)

Ответы [ 3 ]

2 голосов
/ 04 ноября 2010
  1. Не используйте getBaseContext. Деятельность - это контекст. Просто используйте this.
  2. Убедитесь, что используемая вами строка не равна нулю.
  3. Вы сами не создаете объекты деятельности. Вам нужно, чтобы операционная система сделала это через startActivity.
0 голосов
/ 05 ноября 2010

Вы НЕ МОЖЕТЕ просто вызвать новый MyActivity ().Это не так, как создаются мероприятия.Вы НИКОГДА, НИКОГДА не можете вызывать new для класса, расширяющего Activity.

Вы не можете вызывать методы экземпляров Activites из других классов.

0 голосов
/ 04 ноября 2010

Поскольку основной вид деятельности создан вами, базовый контекст не задан. Может быть, вы можете добавить:

main.setBaseContext(this);

до

main.execute(Message);

Но вся ваша программа выглядит странно. Зачем вам нужно создавать действия для выполнения чего-то? Если вам нужно начать другое действие, используйте startActivity (). Если вам нужно что-то выполнить немедленно, вы должны передать эти «параметры» через Intent.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...