2016-11-24 18 views
1

さまざまなクラスのさまざまなコールにボタンを使用したいと思います。しかし、ActivityクラスのButtonクリックメソッドを宣言して呼び出すと、null例外がスローされます。私はこれをしたい私のクラスで:アクティビティとクラスで同じボタンを宣言して使用できますか?

public class CustomFeedListViewAdapter extends BaseAdapter { 


     holder.feedUpVoteButton = (Button) view.findViewById(R.id.feedUpVoteButton); 

     holder.feedUpVoteButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        //do stuff 

        } 
        }); 


    private class ViewHolder { 

    Button feedUpVoteButton; 

} 

そして、私はこれをしたい私の主な活動に:あなたはfeedUpVoteButtonいるにアクセスしようとしているため

public class Feed extends AppCompatActivity { 

Button upVoteButton; 

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

     upVoteButton = (Button) findViewById(R.id.feedUpVoteButton); 

    feedUpVoteButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       //do stuff 

       } 
       }); 


    } 
} 
+0

問題はありません。 –

+0

MainActivityの 'button.setOnClick'メソッドでnullエラーが発生する理由はありますか? – grant

+0

activity_feedを共有してください。 –

答えて

0

あなたはNullPointerExceptionが取得していますはFeedで使用されるレイアウトではなく、CustomFeedListViewAdapterで使用されるitem layoutに存在します。

タイプCustomFeedListViewAdapterのアダプタを作成するたびにClickListenerにアクセスしたいですか? yesの場合、その後これを行う...

あなた活動クラス

public class Feed extends AppCompatActivity { 

    CustomFeedListViewAdapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_feed); 

     adapter = new CustomFeedListViewAdapter(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // Handle click here 
      } 

     }); 

    } 
} 

そして、あなたのカスタムアダプタクラス

public class CustomFeedListViewAdapter extends BaseAdapter { 

    View.OnClickListener clickListener; 

    // Constructor 
    public CustomFeedListViewAdapter(View.OnClickListener listener) { 
     clickListener = listener; 
    } 

    @Override 
    void getView(){ 

     holder.feedUpVoteButton = (Button) view.findViewById(R.id.feedUpVoteButton); 

     holder.feedUpVoteButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       //do stuff 

      } 
     }); 
    } 

} 

あなたがのインスタンスごとに異なるリスナーを設定することができますこの方法作成するアダプター。

関連する問題