2014-03-04 2 views
0

У меня есть LazyAdapter, который простирается от BaseAsapter, в котором я реализовал clickListener. Если пользователь нажимает на Facebook, он должен открыть фейсбук, и если пользователь нажимает на Twitter, он должен перейти к следующему действию.Android: Как начать работу с LazyAdapter в onClick

Мой код в LazyAdapter является

button.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 


       if(item.equalsIgnoreCase(Constants.Facebook)) 
       { 

        SocialActivity obj1=new SocialActivity(); 
        obj1.startFB(context); 


       } 
       else if(item.equalsIgnoreCase(Constants.Twitter)) 
       { 

        SocialActivity obj=new SocialActivity(); 
        obj.startTwitter(context); 
       } 

      } 
     }); 

и это код в SocialActivity

Twitter Метод

void startTwitter(Context con) 
    { 
     Intent intent = new Intent(con,TwitterInterface.class); 
     startActivity(intent); 
    } 

Facebook Метод

void startFb(Context con) 
     { 
      Intent intent = new Intent(con,FaceBook.class); 
      startActivity(intent); 
     } 

В вместо этого я также пробовал этот код в LazyAdapter, но каждый раз он дает мне Null Pointer Exception. Поэтому любая помощь для решения этой проблемы будет высоко оценена и заблаговременно.

if(item.equalsIgnoreCase(Constants.Facebook)) 
       { 
        SocialActivity obj1=new SocialActivity(); 
        Intent in = new Intent(context,Facebook.class); 

        obj1.startActivity(in); 


       } 
       else if(item.equalsIgnoreCase(Constants.Twitter)) 
       { 

        SocialActivity obj=new SocialActivity(); 
        Intent intent = new Intent(context,TwitterInterface.class); 

        obj.startActivity(intent); 
       } 
+0

пожалуйста, вы можете опубликовать вы переходником весь код? –

+0

Так в чем проблема? И где вы называете эту функцию? – Piyush

+0

Если вы начинаете деятельность внутри 'LazyAdapter', что означает, что у вас также будет' mContext'. Итак, попробуйте передать 'mContext' вместо' context' внутри 'setOnClickListener'. проблема в контексте, я думаю, что вы получаете 'NullPointerException' –

ответ

1

Я решил с помощью

v.getContext().startActivity(intent) 

Intent intent = new Intent(context,TwitterInterface.class); 

v.getContext().startActivity(intent); 
+1

вам не нужно принимать 'context' внутри' SocialActivity', как вы вызов изнутри 'getView()'. Лучше вы передадите «контекст» из 'getView()', который будет более OOPS-способом программирования –

+0

да именно вы правы и за это спасибо. –

0

Попробуйте это более простая и хорошая практика кодирования

button.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      if(item.equalsIgnoreCase(Constants.Facebook)) 
      { 
       SocialActivity obj1=new SocialActivity(); 
       obj1.startFB(mContext); 
      } 
      else if(item.equalsIgnoreCase(Constants.Twitter)) 
      { 
       SocialActivity obj=new SocialActivity(); 
       obj.startTwitter(mContext); 
      } 

     } 
    }); 
Смежные вопросы