2

只是想知道 ButterKnife(这对于普通的 android 开发来说绝对是惊人的)是否可以在 Android Wear 项目中用于诸如 WearableListViews 之类的东西。

由于这样的代码示例(来自磨损示例),我在这个阶段使用它有点犹豫

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
        @Override
        public void onLayoutInflated(WatchViewStub stub) {
            mTextView = (TextView) stub.findViewById(R.id.text);
        }
    });
}

这表明膨胀东西的最佳时间可能不是像我在普通 android 项目中所做的那样在 onCreate 中。

非常感谢

4

1 回答 1

8

事实证明这样做很有效:)

@InjectView(R.id.list)
WearableListView mListView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
        @Override
        public void onLayoutInflated(WatchViewStub stub) {
            ButterKnife.inject(MainActivity.this, stub);

            // Use injected views here
            mListView.setAdapter(new Adapter(MainActivity.this));
            mListView.setClickListener(MainActivity.this);
        }
    });
    // Don't use injected views here
}

只要确保如果您正在使用任何注入的视图,您还将使用放在匿名类的 onLayoutInflated(...) 方法中,否则它们可能不会在您想要使用它们时被初始化

于 2014-08-02T10:59:34.440 回答