我有一个类(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");
    }
}

然后使用带有_前缀的生成的类。

10-02 09:22