结合-的onclick-上的TextView-使用-butterknife

时间:2018-04-06 05:39:37

标签: android textview butterknife

我使用Butterknife有点新,我遇到了问题。我想点击textview并打开另一个活动。我知道如何在不使用Butterknife的情况下做到这一点,但这是我到目前为止所做的:

operator+=

我现在的问题是我不知道如何使用我的onClick方法,因为如果我将该方法放在onCreate中,活动将立即打开下一个活动。我试图使用tv_forgot_pass.setOnClickListener并且无法正常工作。并且在xml中也不起作用,因为该方法没有View作为参数。

我在做什么?还是有另一种方法可以用Butterknife设置clicklistner?

我将解释为什么不与this question

重复

首先,他们正在使用Butterknife的旧版本,我使用的是8.8.1版本,而“重复的问题”是使用6.1.0。我的版本不支持InjectView(它现在绑定)。其次,我的问题是关于单击TextView,另一个问题是关于单击按钮。这是相似但不平等的。最重要的是,我在一小时前阅读了“重复的问题”,在我提出问题之前,因为我没有找到问题的解决方案,所以我决定发布我的问题。

5 个答案:

答案 0 :(得分:1)

onClick

@OnClick(R.id.tv_forgot_pass)
    public void onForgotPassClick(View view) {
        Context mContext = LoginActivity.this;
        Intent mIntent = new Intent(mContext, ForgotPasswordActivity.class);
        startActivity(mIntent);
        finish();
    }

答案 1 :(得分:1)

  

java.lang.IllegalStateException:在父级或祖先中找不到方法forgotPassClick(View)   android的上下文:在视图类上定义的onClick属性   带有id' tv_forgot_pass'

的android.support.v7.widget.AppCompatTextView

Logcat显示IllegalStateException

  

表示某个方法已被非法或不合适地调用   时间。换句话说,Java环境或Java应用程序不是   在适当的状态下进行所要求的操作。

  • 您应该使用AppCompatTextView代替 的 TextView 即可。
  • 从XML中删除 android:onClick="forgotPassClick"

<强> XML

<android.support.v7.widget.AppCompatTextView 
    android:id="@+id/tv_forgot_pass"  
    android:focusable="true" 
    .... />

然后

@OnClick(R.id.tv_forgot_pass)
void forgotPassClick(){
        Context mContext = LoginActivity.this;
        Intent mIntent = new Intent(mContext, ForgotPasswordActivity.class);
        startActivity(mIntent);
        finish();
    }
}

答案 2 :(得分:0)

无论你做什么都是对的。

@OnClick(R.id.tv_forgot_pass)
void forgotPassClick(){
        Context mContext = LoginActivity.this;
        Class nextActivity = ForgotPasswordActivity.class;
        Intent mIntent = new Intent(mContext, nextActivity);
        startActivity(mIntent);
        finish();
    }
当您点击tv_forgot_pass时,

将执行上面的代码。

答案 3 :(得分:0)

做出一些改变。 首先将文本视图绑定为类的本地,如下所示。

    @BindView(R.id.myTextView)
TextView myTextView;

然后在onCreate方法之后绑下黄油刀如下..

        ButterKnife.bind(this);

然后应用下面的点击事件..

    @OnClick(R.id.myTextView)
private void goNextActivity(){
    Intent mIntent = new Intent(this, ForgotPasswordActivity.class);
    startActivity(mIntent);
    finish();
}

并且两个活动都在android清单文件中定义。

答案 4 :(得分:0)

在oncreate之前使用@Bind可以正常工作

public void removeNotification(Context context, int notificationId) {      
    NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
            .getSystemService(Context.NOTIFICATION_SERVICE);
    nMgr.cancel(notificationId);
}