2015-02-06 145 views
0

我做這個類使用自己的類:在另一個Android活動

public class DisplayItems extends ListActivity{ 

    ArrayList<String> contactNames = new ArrayList<>(); 
    ArrayList<String> contactNumbers = new ArrayList<>(); 

    //Get the contacts in the phone 
    public void getContacts(){ 
     Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); 
     while (phones.moveToNext()) 
     { 
      String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
      String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      contactNumbers.add(phoneNumber); 
      contactNames.add(name + "\n" + phoneNumber); 
     } 
     phones.close(); 
    } 

    //displaying contacts name and numbers in a listView 
    public void displayContacts(){ 
     ListView lstView = getListView(); 
     lstView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 

     setListAdapter(new ArrayAdapter<>(this, 
       android.R.layout.simple_list_item_checked, contactNames)); 
    } 
} 

現在我想要使用這個類在這一個:

public class PickNumbersActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_pick_numbers); 

     //Get message text 
     Intent i = getIntent(); 
     Bundle extras = i.getExtras(); 
     String message_text = extras.getString("message"); 

     DisplayItems display = new DisplayItems(); 
     display.getContacts(); 
     display.displayContacts(); 

    } 
} 

但它不工作...和我是新來的android工作室,我甚至不知道當我的應用程序不工作時,在哪裏查找錯誤消息 謝謝。

+0

如果您使用的是Android Studio,則應在底部標有「logcat」標籤。點擊它以獲取錯誤信息。另外,它在運行應用程序時應該會自動彈出。 – IntegralOfTan 2015-02-06 18:03:51

+0

也添加您自己的日誌調試點。可以幫助 – 2015-02-06 18:04:55

+0

點擊「DisplayItems」(如果未加載,應該用紅色加下劃線),然後按Alt + Enter導入該類。如果沒有靜態導入它們,您將無法引用它們。 – aProperFox 2015-02-06 18:05:54

回答

0

首先,你正試圖實例化你的DisplayItems類,它擴展了ListActivity,你不應該這樣使用它。更好的方法是將DisplayItems轉換爲DisplayItemsFragment

首先確保您有一個ID爲container的佈局。

然後添加到您的PickNumbersActivity

if (savedInstanceState == null) { 
    getSupportFragmentManager().beginTransaction() 
      .add(R.id.container, new DisplayItemsFragment()) 
      .commit(); 
} 

最後讓你的類擴展ListFragment像這樣:

public class DisplayItemsFragment extends ListFragment{ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     getContacts(); 

    } 

    //Get the contacts in the phone 
    public void getContacts(){ 
     Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); 
     while (phones.moveToNext()) 
     { 
      String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
      String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      contactNumbers.add(phoneNumber); 
      contactNames.add(name + "\n" + phoneNumber); 
     } 
     phones.close(); 
     displayContacts(); 
    } 

    //displaying contacts name and numbers in a listView 
    public void displayContacts(){ 
     ListView lstView = getListView(); 
     lstView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 

     setListAdapter(new ArrayAdapter<>(this, 
       android.R.layout.simple_list_item_checked, contactNames)); 
    } 
} 

如果您有更多問題,只是籤正式working with fragments documentation

+0

謝謝,我知道了:) – P3P5 2015-02-07 18:15:11

+0

很高興知道,如果這個問題有幫助,那麼你可能想通過檢查旁邊的複選標記來接受它。 – MrEngineer13 2015-02-07 20:59:07

相關問題