如何在活动中初始化接口



在导航抽屉活动中选择某个项目时,我需要在片段中调用一个方法。 为此,我创建了一个接口,我将从活动中初始化和调用方法,此外,我将在 Fragment 中实现此接口并覆盖此方法。 下面是用于声明接口的代码片段。

public interface AlertForDiscardDefaultProfileChanges {
void alertForDiscardDefaultProfileChanges(int navigationItemID);
}

这就是我在活动中初始化的方式。

private AlertForDiscardDefaultProfileChanges alertForDiscardDefaultProfileChanges;
@Override
public void onCreate(Bundle savedInstanceState) {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dashboard);
alertForDiscardDefaultProfileChanges = (AlertForDiscardDefaultProfileChanges) this;
}

在这里,我得到了初始化它的java.lang.ClassCastException。 不知道我在这里错过了什么或出了什么问题。

您必须实现此接口到您的活动/片段,例如:

主要活动 :

public class MainActivity extends AppCompatActivity implements FragmentClassName.AlertForDiscardDefaultProfileChanges{
//override methods
@Override
public void alertForDiscardDefaultProfileChanges(String navigationItemID) {
// now use navigationItemID here...
}
}

这是我实现它的方式, 我通过一个片段的对象调用了一个方法,我想在其中实现一个方法。

片段类 -

public class DefaultProfileFragment extends Fragment implements 
AlertForDiscardDefaultProfileChanges {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_default_profile, container, 
false);
mContext = view.getContext();
return view;
}
@Override
public void alertForDiscardDefaultProfileChanges(int navigationItemID) {
showDismissWarning(navigationItemID);
}

我需要从中调用接口方法的活动。 片段类的简单对象和方法的名称。不需要做任何花哨的事情。无需初始化接口。

(new DefaultProfileFragment()).alertForDiscardDefaultProfileChang‌​‌​es(id);

步骤-1

public interface AlertForDiscardDefaultProfileChanges {
void alertForDiscardDefaultProfileChanges(int navigationItemID);
}

定义此方法,希望从哪个活动和类传输数据

步骤 2 -

也在步骤 1 类中定义此方法。

private  AlertForDiscardDefaultProfileChanges favListner;
public void setAlertOnDiscardListner(AlertForDiscardDefaultProfileChanges 
favOnTouchListner) {
favListner = favOnTouchListner;
}

步骤 -3 .

从步骤 1 类传递值,如下所示

favListner.alertForDiscardDefaultProfileChanges(int navigationItemID);

步骤-4 您希望数据首先在哪个类中实现该接口。

Class A implements YourActivity_where_interface define.AlertForDiscardDefaultProfileChanges{
override Method.
}

第5步。

在您想要数据的那个类中,您也应该做一件事。

您应该必须从创建方法初始化接口,如下所示。

YourActivity_where_interface定义。setAlertOnDiscardListner(this);

现在完成,你可以玩它了。

最新更新