Кнопка не запускается для новой активности

avatar
Anand Trivedi
8 апреля 2018 в 08:45
74
3
0

Я пытался создать ListView с изображением, текстовыми представлениями и кнопками.

Я пытаюсь заставить кнопки запускать новое действие, используя код

button code

но когда я использую

Намерение намерение = новое намерение(MyListAdapter.this, Login.class);

Я получаю сообщение об ошибке Cannot Resolve constructor intent error.

И в следующей строке

startActivity(намерение);

Я получаю error cannot resolve method startactivity

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

Любая помощь будет оценена по достоинству. Спасибо


public class MyListAdapter extends ArrayAdapter<Hero> {

//the list values in the List of type hero
List<Hero> heroList;

//activity context
Context context;

//the layout resource file for the list items
int resource;

//constructor initializing the values
public MyListAdapter(Context context, int resource, List<Hero> heroList) {
    super(context, resource, heroList);
    this.context = context;
    this.resource = resource;
    this.heroList = heroList;
}

//this will return the ListView Item as a View
@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {

    //we need to get the view of the xml for our list item
    //And for this we need a layoutinflater
    LayoutInflater layoutInflater = LayoutInflater.from(context);

    //getting the view
    View view = layoutInflater.inflate(resource, null, false);

    //getting the view elements of the list from the view
    ImageView imageView = view.findViewById(R.id.imageView);
    TextView textViewName = view.findViewById(R.id.textViewName);
    TextView textViewTeam = view.findViewById(R.id.textViewTeam);
    Button test = view.findViewById(R.id.buttonDelete);

    //getting the hero of the specified position
    Hero hero = heroList.get(position);

    //adding values to the list item
    imageView.setImageDrawable(context.getResources().getDrawable(hero.getImage()));
    textViewName.setText(hero.getName());
    textViewTeam.setText(hero.getTeam());

    //adding a click listener to the button to remove item from the list

    test.setOnClickListener(new View.OnClickListener() {
        @Override

        public void onClick(View v) {
            Intent intent = new Intent(MyListAdapter.this, Login.class);
            startActivity(intent);
        }

    });
    return view;


}
Источник
iamkdblue
8 апреля 2018 в 08:47
1

вам нужно передать контекст классу адаптера из вашей активности и начать следующую активность с помощью этого context.startActivity(intent); добавлено: Intent(.context, Login.class);

Anand Trivedi
8 апреля 2018 в 08:59
0

спасибо, это сработало

Ответы (3)

avatar
I Wayan Dharmana
8 апреля 2018 в 10:14
1

Попробуйте запустить действие с контекстом. Где мы можем получить контекст в адаптере? Проверьте ниже:

final Context mContext = test.getContext();

test.setOnClickListener(new View.OnClickListener() {
        @Override

        public void onClick(View v) {
            Intent intent = new Intent(mContext, Login.class);
            mContext.startActivity(intent);
        }

    });
avatar
VSlash
8 апреля 2018 в 09:33
1

Поскольку параметры, которые вы указали в конструкторе Intent, неверны. Вместо этого используйте Context.

Intent intent = new Intent(yourContext, Login.class);
yourContext.startActivity(intent);
avatar
ADM
8 апреля 2018 в 08:48
1

Intent принимает первый аргумент как Context. Поскольку Adapter не является дочерним классом Context, вы не можете напрямую использовать this. Вы должны использовать context, который передается в качестве аргумента. Измените код следующим образом.

tx.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(context, Login.class);
            context.startActivity(intent);
        }
    });
Anand Trivedi
8 апреля 2018 в 08:56
0

Он исправил ошибку конструктора, но метод startactivity не может быть разрешен, он все еще там edit: nvm забыл поместить туда контекст, извините и спасибо.