活动无法转发给听众

时间:2017-03-27 08:53:57

标签: android interface

在我的项目中,我创建了一个名为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();
    }

3 个答案:

答案 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 ..
}