У меня мой код определил путь ниже. Есть два важных мероприятия. Действие (1) показывает некоторые изображения в ViewFlipper. Он использует методы для загрузки желаемого изображения напрямую. Метод onOptionsItemSelected()
извлекает данные из меню, определенного в связанном XML-макете R.layout.browse
. Другой метод, displaySelectedFlag()
, получает параметр тега, переданный из другого действия, назовем его активностью (2).Почему я здесь получаю исключение NullPointerException?
активность (1):
public class BrowserActivity extends AppCompatActivity implements SimpleGestureListener, View.OnClickListener {
public ViewFlipper vFlipper;
(...)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.browse);
vFlipper = (ViewFlipper) findViewById(R.id.viewFlipperBrowser);
(...)
} // onCreate() ends here
// this method below works fine:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
vFlipper.setDisplayedChild(item.getOrder());
return true;
}
// and this one doesn't:
public void displaySelectedFlag(int orderTag) {
vFlipper.setDisplayedChild(orderTag); // crashes here
}
}
активность (2):
public class ListActivity extends Activity implements View.OnClickListener {
private BrowserActivity browserActivity = new BrowserActivity();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
ImageButton imageA = (ImageButton) findViewById(R.id.img_a);
imageA.setOnClickListener(this);
ImageButton imageB = (ImageButton) findViewById(R.id.img_b);
imageB.setOnClickListener(this);
}
public void displayImageInfo(View view) {
String tagValue = (String) view.getTag();
int tagId = Integer.parseInt(tagValue);
Intent intent = new Intent(this, BrowserActivity.class);
startActivity(intent);
browserActivity.displaySelectedImage(imageId);
}
@Override
public void onClick(View view) {
displayImageInfo(view);
}
}
Как я проверил, метод onClick()
называется активности (2) извлекает идентификатор в ImageButton и передает его к деятельности (1). К сожалению, я получаю исключение NullPointerException при вызове ViewFlipper (строка помечена в приведенном выше коде, activity (1)).
Любая идея, почему это происходит?
В этом ответе объясняется, почему вы не должны создавать объекты Деятельности. http://stackoverflow.com/questions/14956018/can-i-create-the-object-of-a-activity-in-other-class – Apoorv