2017-04-07 15 views
0

私はこのソリューションをどこにも見つけることができません。私はまだプログラミングには全く新しいので、簡単な質問かもしれません。異なるレイアウトの画像ビューの画像ソースを変更する

私のMainActivityでは、私はViewPagerの位置を取っています。このポジションによれば、私はImageViewのソースを変更して、サービス内で膨らんだレイアウトに配置したいと考えています。しかし、私のコードでは、私はNullPointerExceptionを得ています。 ImageViewは、現在表示されているものとは異なるレイアウトになっているため、別の方法で宣言する必要がありますか?

public void OnClick(View view) { 


    pagenumber = viewPager.getCurrentItem(); 
    imageView = (ImageView) findViewById(R.id.filterview); 

    switch (pagenumber){ 
     case 0: imageView.setImageResource(R.drawable.goghfilter); 
      break; 
     case 1: imageView.setImageResource(R.drawable.background3); 
      break; 

ありがとうございました!

答えて

0

レイアウトで膨らんだクラスはそのレイアウト内のビューしか見つけられないことを覚えておいてください。そのレイアウトにないビューがエラーを引き起こすfindByIdを試してみてください。 これを解決するには、カスタムレイアウトインフレータを定義し、レイアウトをイメージで膨張させ、そのビューを膨らませて、その上でfindByIdを実行します。返信用

+0

おかげで、 私は次のことを試みた:。 'LayoutInflaterインフレータ=(LayoutInflater)getBaseContext()getSystemService(Context.LAYOUT_INFLATER_SERVICE)。 v = inflater.inflate(R.layout.overlay、null); imageView =(ImageView)v.findViewById(R.id.filterview); ' エラーを取り除きましたが、画像ビューのソースを変更していないようです。これはあなたが意味することですか? –

+0

さて、このソースの変更を視覚的に確認する方法を教えてください。その特定のイメージはアクティビティとバインディングレイアウトにどのように関連していますか? – Remario

+0

視覚的にはい、別のオプションを選択すると、デフォルトのソースとは異なる画像が表示されます。選択された番号が変更されていて、うまくいけばテストしました。だから問題は、ソースを変更することです。画像はアクティビティにはまったく関係ありません。サービスが開始されたときに表示されるレイアウトのイメージビューです。 –

関連する問題