在我的项目中,我创建了一个名为VerifiedListnerInterface
的接口,其中包含方法public void VerifiedInterfaceListner(String VarifiedValue);
。现在我有一个包含导航抽屉的活动。
在那个抽屉里,我在OnItemClickListner
打开片段并且它工作正常。
但是当我尝试分配一个列表器时它给了我类强制转换异常。
HomeActivity cannot be cast to com.Interfaces.VerifiedInterface
我在itemClickListner中的代码是:
if(position==3)
{
VerifiedInterface listner = (VerifiedInterface) HomeActivity.this;
listner.VerifiedInterfaceListner(ConstantFunction.getStatus(HomeActivity.this, ConstantVariables.VERIFIED));
openNewFragment(new EditProfileFragment(), "driverEditProfile");
}
我的自定义接口类是
public interface VerifiedInterface {
public void VerifiedInterfaceListner(String VarifiedValue);
}
那么如何初始化一个列表器
< p>我打开片段的代码是public void openNewFragment(Fragment f, String tag) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment fragment = getSupportFragmentManager().findFragmentByTag(tag);
if (fragment != null) {
if (currentFragment != null) {
if (fragment.getClass().equals(currentFragment.getClass())) {
driverNavigationdrawer.closeDrawers();
return;
}
}
ft.show(fragment);
ft.hide(currentFragment);
currentFragment = fragment;
} else {
if (currentFragment != null)
ft.hide(currentFragment);
ft.add(R.id.driverFrameContainer, f, tag);
currentFragment = f;
}
ft.commit();
driverNavigationdrawer.closeDrawers();
}
答案 0 :(得分:1)
根据错误,您的HomeActivity似乎不是VerifiedInterface类型的实例。
确保您实际在HomeActivity中实现了界面,例如:
ââââââ¤âââââââââââ¤âââââââââââââââ
â id â name â email â
ââââââ¼âââââââââââ¼âââââââââââââââ¢
â 1 â John Doe â john@doe.com â
â 2 â Jane Doe â jane@doe.com â
ââââââ§âââââââââââ§âââââââââââââââ
答案 1 :(得分:0)
您的HomeActivity是否实现了VerifiedInterface?像这样:
public class HomeActivity extends AppCompatActivity implements VerifiedListenerInterface {
// ...
}
答案 2 :(得分:0)
您必须在其他类的构造函数中传递您的活动
在您的活动中实现接口:
otherClass obj = otherClass(HomeActivity.this);
在你的otherClass.java中:
在任何地方创建参考:
VerifiedInterface listener
编写构造函数:
otherClass(VerifiedInterface listenerpassed){
this.listener = listenerpassed;
}
现在,在otherClass中,您可以使用此listener
向活动发送回调:
listener.VerifiedInterfaceListner(VarifiedValue);
在您的HomeActivity
中,您将收到VerifiedInterfaceListner
@Override
public void VerifiedInterfaceListner(String VarifiedValue){
//Do your stuff like opening another fragment ..
}