2013-01-10 136 views
5

我工作的一個家庭更換應用程序。我想一個OnClickListener增加對Java有一個按鈕,但我想要的方式產生錯誤:Android的啓動活動?

The method startActivity(Intent) is undefined for the type 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); 
      } 
     }); 
+0

究竟是該代碼?一個活動? –

+0

它在PagerAdapter上。 – lisovaccaro

+0

不管怎麼說,使用'v.getContext()startActivity(意向);'啓動應用程序,以及電網的回答做出正確的意圖。 (刪除答案,因爲它沒有真正達到目的)。 –

回答

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

+0

@dymmeh這是啓動聯繫人應用程序的正確方法。 –

+0

@ 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)); 
    } 
});