来自Software Engineering Stack Exchange的

This question was migrated,因为可以在Stack Overflow上进行回答。
                            Migrated 5年前。
                        
                    
                
                            
                    
这可能对许多人都有明显的答案,但我似乎无法弄清楚。我正在尝试在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在其他类中可见?
它已经被宣布为公开。任何提示或建议都很好。如果需要可以发布源代码!

最佳答案

尝试在分配给txtFoodSearch的公共声明之后加上static声明。这是因为static关键字在加载类时使txtFoodSearch之类的变量可全局访问。

因此,在其对应的类中声明了公共静态txtFoodSearch之后,您应该能够这样做:在任何其他类中访问Classname.txtFoodSearch来访问txtFoodSearch的内容。但是,请确保将包含txtFoodSearch的类声明为public。

10-07 12:51