我有一个类(class),它是从Fragment扩展的。在一个类中,我的editText为null,并且@AfterViews没有调用,这是我的代码:
@EFragment
public class Search extends Fragment {
private final String TAG = Search.class.getCanonicalName();
private static ProgressDialog progressDialog;
private Activity activity;
private ArrayList<String> urlList = new ArrayList<String>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.search, container, false);
Log.i(TAG, "onCreateView");
return rootView;
}
@ViewById
RadioButton firstRadio;
@ViewById
RadioButton secondRadio;
@ViewById(R.id.editText1)
EditText editText1;
@AfterViews
void afterViews() {
int a = 1;
a++;
Log.i(TAG, editText1 + "AfterViews");
Log.i(TAG, a + "aaaaaaaa");
}
private void extractUrlsFromText(String s) {
Matcher matcher = Patterns.WEB_URL.matcher(s);
while (matcher.find())
urlList.add(matcher.group());
}
public void searchWebUrl() {
Log.i(TAG, editText1 + "searchWebUrl");
String text = editText1.getText().toString();
if (!TextUtils.isEmpty(text))
extractUrlsFromText(text);
parseWithUrls(urlList);
((Main) getActivity()).switchToFragmentUrlList(urlList);
}
}
请帮助我,为什么editText为null预先感谢!
最佳答案
您必须让AndroidAnnotations
处理布局膨胀并注入(inject) View 引用:
@EFragment(R.layout.my_fragment_layout)
public class MyFragment extends Fragment {
@ViewById(R.id.my_text_view) // must exist in layout, must be of correct type
TextView mTextView;
@AfterViews
void initViews() {
mTextView.setText("Hello World");
}
}
然后使用带有
_
前缀的生成的类。