私のコードは以下のように定義されています。重要な活動は2つあります。アクティビティ(1)は、ViewFlipper内のいくつかのイメージを示しています。メソッドを使用して、目的のイメージを直接ロードします。 onOptionsItemSelected()
メソッドは、リンクされたXMLレイアウトR.layout.browse
内で定義されたメニューからデータをフェッチします。もう1つのメソッドは、別のアクティビティから渡されたタグパラメータを取得します。それをactivity(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);
}
}
Iがチェックされるように、活性と呼ばれる方法onClick()
(2)のImageButtonのIDを取得し、それを通過します活動(1)へ。残念ながら、ViewFlipperを呼び出すと、NullPointerExceptionが発生します(行は上記のコードでマークされています(activity(1))。
なぜ起こるのか?
アクティビティのオブジェクトを作成しない理由を説明します。 http://stackoverflow.com/questions/14956018/can-i-create-the-object-of-a-activity-in-other-class – Apoorv