2016-09-23 3 views
1

Я всегда получаю java.lang.NullPointerException при извлечении данных с моего MainActivity на второй номер Activity.Передача данных с помощью намерений

Это из моего MainActivity:

Intent i = new Intent(MainActivity.this,ScanActivity.class); 
i.putExtra("isConnected", String.valueOf(isConnected)); 
i.putExtra("serverIP", serverIP); 
startActivity(i); 

А вот где я получаю NullPointerException:

Intent extras = getIntent(); 
public String isConnected = extras.getStringExtra("isConnected"); 
public String serverIP = extras.getStringExtra("serverIP"); 

Является ли мой код неправильно или что-то еще, что заставляет его быть null?

+1

Вы делаете это за пределами метода 'onCreate()' второй 'Activity'? – Onik

+0

есть. это то, что его вызывает? – addykha

+0

Наверно, делает. – Onik

ответ

1

Вы не можете получить Intent до SecondActivity. Это причина для NPE. Переместите код внутри тела метода SecondActivityonCreate().

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.your_layout); 

    Intent extras = getIntent(); 
    String isConnected = extras.getStringExtra("isConnected"); 
    String serverIP = extras.getStringExtra("serverIP"); 
} 
-2

Вы должны использовать это на второстепенной деятельности

Bundle bundle = getIntent().getExtras(); 
if(bundle != null){ 
String serverIp = bundle.getString("serverIP); 
} 

вы должны обуславливать его первым, чтобы избежать пустой указатель, Надеюсь, что это работает.

+0

Это не ответ. Вы можете использовать методы удобства, чтобы избежать получения пакета, они выполняют нулевую проверку. –

+0

Я вижу, мой плохой. Я все еще новичок. – Meowok

+0

Неважно, мы все иногда даем неправильный ответ. Вы код работает отлично, но так же, если бы он сделал это в нужном месте. –

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