在导航抽屉活动中选择某个项目时,我需要在片段中调用一个方法。 为此,我创建了一个接口,我将从活动中初始化和调用方法,此外,我将在 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()).alertForDiscardDefaultProfileChanges(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);
现在完成,你可以玩它了。