Как использовать намерение в классе baseadapter - PullRequest
3 голосов
/ 06 мая 2011

Привет, у меня есть базовый класс адаптера для настраиваемого просмотра списка. у моего списка есть кнопка когда я нажимаю эту кнопку, я должен перенаправить элемент управления на другой вид деятельности. Когда я использую Intent для перенаправления, он показывает ошибку во время выполнения. Вот мой код,

public View getView(final int position, View convertView, ViewGroup parent) 
{

    convertView = mInflater.inflate(R.layout.listview_elements, null);

    TextView textview1 = (TextView) convertView.findViewById(R.id.TextView01);
    TextView textview2 = (TextView) convertView.findViewById(R.id.TextView02);
    TextView textview3 = (TextView) convertView.findViewById(R.id.TextView03);
    Button buy=(Button)convertView.findViewById(R.id.buy_song_button);
    buy.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

        Intent intent=new Intent(con,MainActivity.class);
        con.startActivity(intent);


        }
    }); }

Как перенаправить на другое действие из моего базового класса адаптера?

Ответы [ 5 ]

15 голосов
/ 09 мая 2011

Я решил эту проблему сам. Простая модификация в Intent решила это. Я должен был установить флаг в мои намерения. Вот и все.

public View getView(final int position, View convertView, ViewGroup parent) 
     {

convertView = mInflater.inflate(R.layout.listview_elements, null);

TextView textview1 = (TextView) convertView.findViewById(R.id.TextView01);
TextView textview2 = (TextView) convertView.findViewById(R.id.TextView02);
TextView textview3 = (TextView) convertView.findViewById(R.id.TextView03);
Button buy=(Button)convertView.findViewById(R.id.buy_song_button);
buy.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {

    Intent intent=new Intent(context,MainActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);


    }
}); }
2 голосов
/ 28 января 2013

попробуйте это:

  Intent intent=new Intent(activity.getApplicationContext(),MyPlace.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.putExtra("city", "Yangon");
    activity.getApplicationContext().startActivity(intent);
1 голос
/ 12 марта 2016

Передача контекста через конструктор, а затем просто используйте эту строку кода:

    Intent intent=new Intent(context.getApplicationContext(), YourActivity.class);
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
      context.getApplicationContext().startActivity(intent);

Спасибо :))

1 голос
/ 02 марта 2016

этот код работал для меня, особенно если у вас есть базовый класс адаптера для адаптера gridview:

cmnt_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.e("position",position+"");
                Intent comment_page=new Intent(view.getContext(),comments_page.class);
                comment_page.putExtra("position",position);
                view.getContext().startActivity(comment_page);
            }
1 голос
/ 06 мая 2011

Используйте метод v.getContext () вместо con в методе onClick

...