【问题标题】:Inheritance and extending classes继承和扩展类
【发布时间】:2014-02-11 12:47:53
【问题描述】:

这对许多人来说可能会有一个明显的答案,但我似乎无法弄清楚。我正在尝试在 android 应用程序中进行 api 调用,但一直运行到“.....无法解决”我有三个 Java 类,FoodSearchActivity、GetItemsActivity 和 GetData!

FoodSearchActivity extends Activity; 

这个类声明如下

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

但是在GetItemsActivity 类中,除非我扩展FoodSearchActivity,否则txtFoodSearch 无法解析。这反过来意味着我无法实现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&lt;String, String, String&gt;

GetData extends AsyncTask<String, String, String>

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

txtFoodSearch.getText().toString();

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

【问题讨论】:

    标签: java android inheritance extensibility


    【解决方案1】:

    尝试遵循您分配给 txtFoodSearch 的公共声明,并声明 static。这是因为 static 关键字使诸如 txtFoodSearch 之类的变量在它们的类被加载时全局可访问。

    因此,在其对应的类中声明 public static txtFoodSearch 后,您应该可以在任何其他类中执行:Classname.txtFoodSearch 来访问txtFoodSearch。但是请确保包含 txtFoodSearch 的类被声明为 public

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多