gpt4 book ai didi

android - 无法使用 RoboGuice 将 View 注入(inject)自定义类

转载 作者:太空宇宙 更新时间:2023-11-03 12:32:05 25 4
gpt4 key购买 nike

我开始使用RoboGuice在我的项目中。我可以轻松地在 fragment 和 Activity 中注入(inject) View ,但我在自定义 View 方面遇到了一些麻烦。我每次都得到 null ptr 异常。

根据 RoboGuice's example我对我的自定义类做了同样的事情:

测试 Activity

@ContentView(R.layout.test_layout)
public class TestActivity extends RoboActivity {

@InjectView(R.id.testView_1) TestView testView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}

测试 View

 public class TestView extends LinearLayout {


@InjectView(R.id.log_in_tab) View logInTab;

public TestView(Context context) {
super(context);
initView();
}

public TestView(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}

public TestView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView();
}


@Override
public void onFinishInflate() {
super.onFinishInflate();

if (logInTab == null)
Toast.makeText(getContext(), "Still NULL", Toast.LENGTH_LONG).show();
else
Toast.makeText(getContext(), "Ok", Toast.LENGTH_LONG).show();

}

public void initView() {

inflate(getContext(), R.layout.login_view, this);
RoboGuice.injectMembers(getContext(), this);
}


}

登录 View 的 xml 在 pastebin here.

测试布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<view
android:layout_width="wrap_content"
android:layout_height="wrap_content"
class="hu.illion.kwindoo.view.test.TestView"
android:id="@+id/testView_1"/>
</LinearLayout>

Toast 总是说 logInTab 为空。

如果可以,请帮忙。

最佳答案

我不知道为什么没有代码示例,但是当我必须注入(inject)自定义 View 时,我使用 injectViewMembers。

希望这对你有用:

public void initView() {
inflate(getContext(), R.layout.login_view, this);
RoboGuice.injectMembers(getContext(), this);
RoboGuice.getInjector(getContext()).injectViewMembers(this);
}

关于android - 无法使用 RoboGuice 将 View 注入(inject)自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30706138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com