继承和扩展类

时间:2014-02-11 12:47:54

标签: java android inheritance extensibility

对于很多人来说,这可能会有一个明显的答案,但我似乎无法弄明白。我试图在Android应用程序中进行api调用,但继续运行“.....无法解决”我有三个Java类,FoodSearchActivity,GetItemsActivity和GetData!

FoodSearchActivity extends Activity; 

此类声明以下

public ListView list;
public Button btnSearch;
public EditText txtFoodSearch;

但在GetItemsActivity班级中,txtFoodSearch无法解析,除非我延长FoodSearchActivity。这反过来意味着我无法实现AsyncTask。当GetItemsActivity确实实施AsyncTask时,我收到错误:

 " The type AsyncTask<String,String,String> cannot be a superinterface of GetItemsActivity; a superinterface must be an interface"

GetItemsActivity extends FoodSearchActivity;

为了尝试解决这个问题,我创建了一个新的GetData类,扩展了AsyncTask<String, String, String>

GetData extends AsyncTask<String, String, String>

当我这样做时,我没有错误

txtFoodSearch.getText().toString();

我回到txtFoodSearch无法解决。 txtFoodSearch是一个EditText字段,用于输入用户。我怎样才能改变这一点,以便txtFoodSearch在其他类中可见? 它已被宣布为公开。任何提示或建议都会很棒。如果需要,可以发布源代码!

1 个答案:

答案 0 :(得分:2)

尝试使用静态声明分配您已分配给 txtFoodSearch 的公开声明。这是因为 static 关键字可以全局访问 txtFoodSearch 等变量,同时加载它们的类。

因此,在相应的类中声明 public static txtFoodSearch 之后,您应该能够在任何其他类中执行: Classname.txtFoodSearch 来访问其中的内容的 txtFoodSearch 即可。但请确保包含 txtFoodSearch 的类声明为 public