1

我浏览了很多帖子并尝试了它们,但似乎没有任何效果。我想这可能是我错过的东西。这是我正在尝试做的事情和我的问题:我正在尝试创建一个全局变量,以便在我的主活动上,当用户从 ListView 中选择一个项目时,我想将该项目分配给变量和在我的应用程序中使用它。

首先我创建了一个类并将其扩展到应用程序,如下所示:

导入android.app.Application;

公共类 GlobalVariables 扩展应用程序 {

private String mStringValue;

public String getSomeVariable() {
    return mStringValue;
}

public void setSomeVariable(String someVariable) {
    this.mStringValue = someVariable;
}

}

然后在我的主要活动中,我把这段代码设置为变量:

public class MainActivity extends Activity {    

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


 ListView.setOnItemClickListener(new OnItemClickListener() {    

 @Override   
 public void onItemClick(AdapterView<?> listView, View view,       
int position, long id) {    

// Get the cursor, positioned to the corresponding row in the result set    
Cursor cursor = (Cursor) listView.getItemAtPosition(position);      
// Get the Customer Name from this row in the database.    
String countryCode = cursor.getString(cursor.getColumnIndexOrThrow("CustomerName"));    

Toast.makeText(getApplicationContext(), countryCode, Toast.LENGTH_SHORT).show();      

((GlobalVariables) this.getApplication()).setSomeVariable(countryCode);

   }   

});  

问题是我在这一行收到错误“方法 getApplication() 未定义类型 new AdapterView.OnItemClickListener(){}”:

((GlobalVariables) this.getApplication()).setSomeVariable(countryCode);

我阅读了建议执行以下代码的帖子之一,但随后又出现了多个错误:

  • 对于 GlobalVariables 类型,方法 getApplication() 未定义
  • 范围内无法访问 GlobalVariables 类型的封闭实例

    ((GlobalVariables) GlobalVariables.this.getApplication()).setSomeVariable("foo");

您能给我的任何帮助将不胜感激。

谢谢,

蒂姆

4

2 回答 2

0

你为什么不定义你的 GlobalVariables 如下:

public class GlobalVariables
{
    static String mStringValue;
}   

然后你可以在你的应用程序的任何地方使用它GlobalVariables.mStringValue,例如GlobalVariables.mStringValue= countryCode;

于 2013-03-27T02:21:47.917 回答
0

OnItemClickListener()是一个匿名内部类。这意味着当你this在它里面时,this实际上是指一个类型的对象OnItemClickListener,它没有方法getApplication()

尝试:

((GlobalVariables) MainActivity.this.getApplication()).setSomeVariable(countryCode);
于 2013-03-27T02:18:16.223 回答