黄油刀在多种活动中

时间:2019-03-07 22:54:18

标签: java android android-activity butterknife

这是我尝试与ButterKnife一起使用的代码,但是在运行项目时出现以下错误。

错误:找不到符号类活动
错误:程序包活动不存在
错误:程序包活动不存在

BaseActivity

public abstract class BaseActivity extends AppCompatActivity {

    private Unbinder unbinder;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutResource());
        ButterKnife.bind(this);

        setupUI();
    }


    protected abstract int getLayoutResource();

    protected abstract void setupUI();
}

MainActivity

public class MainActivity extends BaseActivity {

    @Override
    protected void setupUI() {

    }

    @Override
    protected int getLayoutResource() {
        return R.layout.activity_main;
    }
}

RegisterActivity

public class RegisterActivity extends BaseActivity {

    @BindView(R.id.editText_username)
    EditText et;

    @Override
    protected void setupUI() {


        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);


    }

    @Override
    protected int getLayoutResource() {
        return R.layout.activity_register;
    }

    @Override
    public void onBackPressed() {
        this.finish();
    }
}

为什么我不能用抽象类绑定多个活动?

Github Project

1 个答案:

答案 0 :(得分:1)

首先,您不需要Unbinder进行活动because Unbinder is only needed for片段`。

第二,最好使用另一种方法来覆盖它,这样就不必设置onCreate。像这样:

public abstract class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutResource());
        ButterKnife.bind(this);

        setupUI();
    }

    protected abstract int getLayoutResource();

    protected abstract void setupUI();
}

然后您可以使用:

public class MainActivity extends BaseActivity {

    @Override
    protected void setupUI() {
      // setup the UI.
    }

    @Override
    protected int getLayoutResource() {
        return R.layout.activity_main;
    }
}

这是将ButterKnife与抽象类一起使用的工作示例:

https://github.com/isnotmenow/ButterKnifeAbstractSample