我使用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,另一个问题是关于单击按钮。这是相似但不平等的。最重要的是,我在一小时前阅读了“重复的问题”,在我提出问题之前,因为我没有找到问题的解决方案,所以我决定发布我的问题。
答案 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
即可。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);
}