如何使用OnClickListener在Android中启动Activity?

5
我正在开发一个主页替换应用程序。我试图在Java中向按钮添加OnClickListener,但是我尝试的方法会产生错误:
“startActivity(Intent) 方法未定义于 new View.OnClickListener() { } 的类型”。
这段代码位于适配器MyPagerAdapter内部。
这是我正在尝试的内容:
    buttonItem.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent("com.android.contacts.ContactsApplication");
            startActivity(intent);
        }
    });

我该如何为一个按钮添加OnClickListener,以打开另一个应用程序,例如com.android.contacts.ContactApplication


编辑: 这是完整的代码,我现在正在尝试:

public class MyPagerAdapter extends PagerAdapter {

    @Override
    public Object instantiateItem(View container, int position) {
        Context context = container.getContext();
        LinearLayout layout = new LinearLayout(context);
        SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
        TextView textItem = new TextView(context);
        Button buttonItem = new Button(context);
        buttonItem.setText("Aceptar");

        // This is what I'm trying, (crashes on click)
        buttonItem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent("com.android.contacts.ContactsApplication");
               v.getContext().startActivity(intent); 
            }
        });

这段代码是在什么地方?在一个Activity里吗? - A--C
它在 PagerAdapter 上。 - lisovaccaro
无论如何,使用v.getContext().startActivity(intent);来启动应用程序,并使用Grid的答案来正确地设置意图。(删除了答案,因为它实际上没有什么作用)。 - A--C
谢谢,这样做确实有效。 - lisovaccaro
2个回答

9
 buttonItem.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i = new Intent();
        i.setComponent(new ComponentName("com.android.contacts", "com.android.contacts.DialtactsContactsEntryActivity"));
        i.setAction("android.intent.action.MAIN");
        i.addCategory("android.intent.category.LAUNCHER");
        i.addCategory("android.intent.category.DEFAULT");
        v.getContext().startActivity(i);
    }

1
这有什么帮助吗?请阅读他的问题。 - dymmeh
@dymmeh 这是启动联系人应用程序的正确方式。 - A--C
@A--C - 意图并没有受到质疑。他的回答包括调用 startActivity,尽管问题明确说明在当前范围内不可访问 startActivity。他的编辑解决了所有这些问题。 - dymmeh

1
(findViewById(R.id.button)).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        startActivity(new Intent(v.getContext(), ACTIVITY.class));
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接