gpt4 book ai didi

java - 不使用接口(interface)将数据从 Activity 传递到非 fragment/Activity 类

转载 作者:行者123 更新时间:2023-12-02 03:27:13 25 4
gpt4 key购买 nike

public boolean getFavourite(Winkel winkel){
boolean isFavourite = false;
MyDBHandler dbHandler = new MyDBHandler(context,null,null,1);
User user = dbHandler.loggedIn(); //This method isn't usable anymore
isFavourite = dbHandler.isFavourite(user,winkel);
return isFavourite;
}

我想将此代码更改为:

public boolean getFavourite(Winkel winkel){
boolean isFavourite = false;
MyDBHandler dbHandler = new MyDBHandler(context,null,null,1);
isFavourite = dbHandler.isFavourite(user,winkel);
return isFavourite;
}

我使用数据库来跟踪哪个用户首先登录,但是通过简单地将数据从我的第一个 Activity 发送到我的第二个 Activity 来更改这一点非常容易。

@Override
public void login(User user){
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("Username",user.getUserName());
startActivity(intent);
}

然后,在我的第二个 Activity 中,我可以使用以下方法调用所有数据库函数:

  user.setUserName(intent.getStringExtra("Username"));

(因为我需要用户名作为我的数据库的 key 。

但是,我的 Activity 有三个 fragment ,其中两个使用我的适配器作为回收器 View 。这些 fragment 实现了我的适配器类中提供的接口(interface),就是这个(只是显示它是完整的,接口(interface)是什么无关紧要,事实是我的 fragment 必须实现这个接口(interface))。

public interface ItemCLickCallback {
void onItemClick(int p);
void onSecItemClick(int p);
}

现在,我需要适配器类中的用户名。它必须来 self 的 Activity (因为那是它的存储位置),并且我无法使用接口(interface),因为我已经在使用一个接口(interface),并且我必须重写每个 fragment 中的方法。

我可以使用 Bundle 将数据从我的 Activity 传递到所有 fragment ,然后在我的 fragment 中创建它时将其传递给适配器。但这似乎是很多多余的代码。有更简单的方法可以做到这一点吗?谢谢

编辑:

在适配器类中:

private CheckFavourite checkFavourite;


public void setCheckFavourite(final CheckFavourite checkFavourite){
this.checkFavourite = checkFavourite;
}

boolean isFavourite = checkFavourite.getFavourite(winkel);

public interface CheckFavourite{
boolean getFavourite(Winkel winkel);
}

fragment :

   public class Overview extends Fragment implements Adaptor.ItemCLickCallback

Activity :

public class SecondActivity extends AppCompatActivity implements Adaptor.CheckFavourite

Activity 必须实现第二个接口(interface),fragment 则实现第二个接口(interface)。但它们都位于同一个适配器实例上。

我需要做什么(基本上在我的 Activity 中):

   adaptor.setCheckFavourite(this);

但我不能,因为我那里没有适配器,它是在我的 fragment 中创建的。

我尝试过:

   adaptor.setCheckFavourite(this.getActivity());

在我的 fragment 中,但这给了我一个错误:

Error:(60, 51) error: incompatible types: FragmentActivity cannot be converted to CheckFavourite.

但是

  adaptor.setItemCLickCallback(this);

在我的 fragment (另一个界面)中工作得很好。我该如何解决这个问题?

最佳答案

:) 您可以使用多重继承。为了能够使一个类实现多个接口(interface),我们需要这样的东西:

public class MyClass extends MyOtherClass implements MyInterface1, MyInterface2, ... , MyInterfaceN {

// Need to implement all interface methods here

}

关于java - 不使用接口(interface)将数据从 Activity 传递到非 fragment/Activity 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38676169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com