0

OKこれが問題です:

Androidアプリ(連絡先アプリ)をやろうとしています。私は3つのクラスに問題があります。

  • MainPage アクティビティ
  • 連絡先マネージャー
  • お問い合わせストア

MainPage は、Android アプリケーションの MainActivity です。ContactManager は、アプリケーション内のすべての連絡先を管理するクラスです。このクラスは、私が作成したリスト (SortedList) に保存された連絡先情報を受け取り、ContactStore クラスに送信します。ContactStore クラスには、addToFile と loadFromFile の 2 つのメソッドがあります。このクラスは、ファイルの書き込みと読み取りを行います。

ContactManager クラスは、ContactStore との間でリストを送受信します。

ContactStore は Java では機能しますが、Android では機能しません。

ContactStore で Android の内部ストレージまたは外部ストレージの場所にアクセスする方法がわかりません。

重要なメソッドを持つ私のクラスは次のとおりです。

public class MainPage extends ListActivity {

private static ContactManager contactManager;

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


    contactManager = new ContactManager(this);

    setListAdapter(new MainPageAdapter(this));

}

連絡先マネージャー:

public class ContactManager {


private SortedList<Contact> contactList = new SortedArrayList<Contact>();

private ContactStore contactStore;

public ContactManager(Context context){
    super();
    this.contactStore = new ContactStore(context);
    this.readContacts();
}

/**
 * Add to ContactsList
 * @param firstName
 * @param lastName
 * @param cellPhone
 * @param workPhone
 * @param email
 */
public void addContact(String firstName, String lastName, String cellPhone, String workPhone, String email){
    contactList.add(new Contact(firstName, lastName, cellPhone, workPhone, email));

    contactStore.addToFile(this.contactList);
}

/**
 * Read from contact list
 * @return the contact list
 * @throws FileNotFoundException 
 */
public void readContacts(){
    this.contactList.clear();

    contactStore.loadFromFile(this);
}

そして ContactStore クラス:

public class ContactStore {

private final File file = new File("Contacts.txt");


public ContactStore(Context context) {
    super();

}


public void addToFile(SortedList<Contact> contactList){

    try {

        file.createNewFile();

        PrintWriter out = new PrintWriter(file);

        try{
            for(int i=0;i<contactList.size();i++){
                out.println(contactList.get(i).toString());
            }
        }
        finally{
            out.close();
        }

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public void loadFromFile(ContactManager contactManager){

    try {
        Scanner in = new Scanner(file);
        try{
            while(in.hasNextLine()){
                String line = in.nextLine();
                String[] tokens = line.split(" ");
                contactManager.addContact(tokens[0], tokens[1], tokens[2], tokens[3], tokens[4]);

            }
        }
        finally{
            in.close();
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

}

}

ファイルへのパス (内部ストレージまたは外部ストレージ) を指定する必要があることはわかっていますが、常にエラーが発生するため、その方法がわかりません。何かわからないことがあれば教えてください。どうもありがとう、あなたが私を助けてくれることを願っています。;)

4

1 に答える 1

1

外部ストレージ (sd カード):

String root = Environment.getExternalStorageDirectory().getAbsolutePath();

内部記憶装置:

String root = context.getFilesDir();

したがって、 ContactStore クラスのコンストラクター (そこにコンテキストが必要なため):

private final File file;

public ContactStore(Context context) {
  super();
  String root = context.getFilesDir();
  file = new File(root + File.separator + "Contacts.txt");
}
于 2013-11-01T10:32:39.520 に答える