簡體   English   中英

在另一個Android Activity類中使用自己的類

[英]Using own class in another Android Activity class

我上了這堂課:

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 studio的新手,即使我的應用無法正常工作,我什至都不知道在哪里查找錯誤消息。謝謝。

首先,您嘗試實例化擴展ListActivity DisplayItems類,並且不應該這樣使用它。 更好的方法是像這樣將DisplayItems轉換為DisplayItemsFragment

首先,請確保您的布局具有container ID。

然后將其添加到您的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));
    }
}

如果您還有其他疑問,請查閱有關片段文檔的官方文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM