0

しばらくの間、これに苦労しています。基本的に、このリストがさまざまなアクティビティでアクセスできることを期待して、単純なリンクリストを作成するようにアプリケーション クラスを拡張しました。しかし、必要なときにリンクリストから情報を取得できないようです。

これが可能であるかどうかはわかりませんが(なぜそうならないのかわかりませんが)、リンクリストを処理するときに愚かな間違いを犯しているだけなのか.

アプリケーション クラスの拡張 (GlobalData)

package com.example.testing;

import java.util.LinkedList;
import android.app.Application;
import android.widget.Toast;

public class GlobalData extends Application {

public static LinkedList<String> EmployeeList;

@Override
public void onCreate(){
    super.onCreate();
    createLinkedList();
}

public void createLinkedList(){
    // create a linked list

    LinkedList<String> EmployeeList = new LinkedList<String>();
    String emp1 ="john", emp2="adam";
    EmployeeList.add(emp1);
    EmployeeList.add(emp2);

    String boo;
     boo = EmployeeList.getFirst();

    //This works, displays the name ok.
    Toast.makeText(getApplicationContext(), "("+boo+")" ,Toast.LENGTH_LONG).show();
}

}

リンクリストにアクセスできるようにしたいメイン。

package com.example.testing;

import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

protected GlobalData globalData;

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

    // Get the application instance
    globalData = (GlobalData)getApplication();  

    String boo;
    boo = GlobalData.EmployeeList.getFirst();

    //This doesn't work & im not sure why.
    Toast.makeText(getApplicationContext(), "("+boo+")" ,Toast.LENGTH_LONG).show();     

}
}

おそらく、私はこのことを始めたばかりであることに言及する必要があるので、これが完全にばかげた質問である場合はお詫びします.

GlobalData クラスに文字列変数が含まれるようにスクリプトを変更すると、上記のコード (いくつかの変更を加えたもの) が正常に機能するため、そのリストの内容にアクセスできない理由がわかりません。では、なぜ変数にはアクセスできるのに、リンクされたリストにはアクセスできないのでしょうか?

ありがとう

4

2 に答える 2

2

この行では、クラスのメンバーとして作成したリストを使用する代わりに、リストの新しいインスタンスを作成しています。

LinkedList<String> EmployeeList = new LinkedList<String>();

この行を次のように変更するだけです。

EmployeeList = new LinkedList<String>();
于 2013-02-08T17:12:34.870 に答える
1

createLinkedList() メソッドに小さな間違いがあります。

LinkedList<String> EmployeeList = new LinkedList<String>();

次のようにする必要があります。

EmployeeList = new LinkedList<String>();

ローカル変数 (たまたま public static クラス フィールドと同じ名前) を作成し、そこにエントリを格納しています。

于 2013-02-08T17:13:43.737 に答える