2012-10-31 42 views
0

也許這是有史以來最愚蠢的問題,但我在獲取實際的Activity對象時遇到了一些問題。如何獲得實際活動?

我的目的:

爲了提取錯誤來自不同Activity的操控,我做了一個類ErrorHandler用靜態方法。

這種方法看起來像這樣,例如:

public class ErrorHandler { 
    ... 
    public static ErrorTuple checkPlaceInput(Activity activity){ 
     EditText edit = (EditText) activity.findViewById(R.id.et_nbge_place); 
     if(edit.getText().toString().equals("") || edit.getText()==null){ 
      return new ErrorTuple(false, "Please enter a place!"); 
     } 
     return new ErrorTuple(true, "everything is fine"); 
    } 
} 

爲了訪問findViewById(...)方法,我必須通過Activity作爲參數。當我在這裏讀到不同的問題時,沒有其他方式可以從Activity以外訪問View。但是,從Activity本身,我怎樣才能訪問這個對象? ContextMyActivity.class都不是Activity對象。

+0

是什麼讓您認爲在Activity類中使用'this'不引用該活動? – Daniel

+0

因爲我認爲使用這個引用的上下文,我認爲上下文!=活動。所以我的問題確實很愚蠢: -/ –

+0

@Daniel這有點短視。 'this'指的是容器對象。例如,在一個Activity的匿名類中使用'this',像'new OnClickListener(){...}',不會引用Activity類。 – Sam

回答

0

如果您從活動中調用該方法,只需執行checkPlaceInput(this)即可。

1

使用this獲取當前對象。在Activity中,你可以在沒有任何事情的情況下調用findViewByID。

0

使用this.關鍵字 - 它是您的對象實例。在活動範圍內,您可以直接致電findViewById()