【问题标题】:Android: Accessing application class linkedlist from main activityAndroid:从主要活动访问应用程序类链表
【发布时间】:2013-02-08 17:04:50
【问题描述】:

已经为此苦苦挣扎了一段时间。基本上我已经扩展了应用程序类,以便它创建一个简单的链表,希望这个列表可以在各种活动中访问。但是当我需要它时,似乎无法从链表中获取信息。

我不确定这是否可能(尽管我不明白为什么不可能)或者我在处理链表时是否犯了一些愚蠢的错误。

扩展应用类(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 类包含一个字符串变量,那么上面的代码(有一些改动)可以正常工作。那么为什么变量可以访问,而链表却不能呢?

谢谢

【问题讨论】:

    标签: java android linked-list


    【解决方案1】:

    在这一行中,您正在创建列表的新实例,而不是使用您创建的作为类成员的实例:

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

    只需将此行更改为:

    EmployeeList = new LinkedList<String>();
    

    【讨论】:

    • 太棒了,感谢百万好友。你不知道我看了多久挠头。我开始认为这是我不知道的android环境的某种限制,结果我只是一个笨蛋。
    【解决方案2】:

    您的 createLinkedList() 方法有一个小错误。

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

    应该是:

    EmployeeList = new LinkedList<String>();
    

    您正在创建一个局部变量(恰好与您的公共静态类字段同名),并将您的条目存储在其中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 2012-06-17
      • 2016-12-09
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多