gpt4 book ai didi

java - 当 Activity A 完成时, Activity A 中的方法正在 Activity B 中调用

转载 作者:行者123 更新时间:2023-12-02 10:57:58 25 4
gpt4 key购买 nike

我知道这很奇怪,但我今天遇到了这个问题。我开发了几个应用程序,但我从未见过这样的东西。让我解释一下;我有一个类,它是所有 Activity 的父类。我将其命名为 ActivityEnhanced。

public class ActivityEnhanced extends AppCompatActivity implements INetConnection.Callback{

public static INetConnection mNetWork;
private static DataPacket dataPacket;


@Override
protected void onResume() {
super.onResume();
G.setCurrentActivity(this);

if(dataPacket == null){
dataPacket = new DataPacket();
}

if(mNetWork == null){
mNetWork = new INetConnection(this);
mNetWork.connectToNetwork();
}
}
.....
.
.
public void sectionRequestDone() {}
}

我有两个 child Activity A 和 B,当我在 Activity A 中收到确认码时,我想登录 Activity B。这两个 Activity 中有一种方法在它们之间是通用的,我正在使用此方法来触发 child 当特定事件发生时类。 [sectionRequestDone()]

public class A extends ActivityEnhanced {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a);
....

loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name = username.getText().toString();
String pwd = password.getText().toString();
login(userInfo); // this method is in parent class
}
});
}

@Override
public void sectionRequestDone() {
goToActivity();
}

private void goToActivity(){
Intent intent = new Intent(this, B.class);
startActivity(intent);
this.finish();
}
}

B类;

public class B extends ActivityEnhanced {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.b);

btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
clearSections();
sectionRequest();
}
});

fillAdapter();
}

@Override
public void sectionRequestDone() {
fillAdapter();
alphaAdapter.notifyDataSetChanged();
}
}

现在他的问题是,每当我在 B 类方法中单击 btn 时,A 类中的sectionRequestDone() 正在调用,但我希望它在 B 类中工作。这很奇怪,因为我完成了 A 类。有没有解决方案有问题吗?

提前致谢。

最佳答案

首先我要感谢所有帮助过我的人。几个小时后我找到了解决方案。

解决方案:

如果我想使用一个 Activity 作为父 Activity ,其中有一些静态字段,我必须在每个 Activity 中设置它们的监听器,这意味着我必须在 ActivityEnhanced 类的 onResume() 方法中执行此操作。在前面的代码中,INetConnection 的所有监听器仅在类 A 中调用,并且这些监听器没有在类 B 中再次调用,因此当sectionRequestDone() 方法调用时,它会在类 A 中触发,而不是在类 B 中触发。

我从 ActivityEnhanced 中删除(实现 INetConnection.Callback)并更改了代码,如下所示:

public class ActivityEnhanced extends AppCompatActivity{

public static INetConnection mNetWork;
private static DataPacket dataPacket;


@Override
protected void onResume() {
super.onResume();
G.setCurrentActivity(this);

if(dataPacket == null){
dataPacket = new DataPacket();
}

if(mNetWork == null){
mNetWork = new INetConnection(this);
mNetWork.connectToNetwork();
}else{
mNetWork.setOnCallbackListener(new INetConnection.Callback(){
@Override
public void onSocketNull() {}

@Override
public void onConnectionSuccessful() {}

@Override
public void onDataReceive(Byte[] data) {
.
.
.
sectionRequestDone();
}
);
}
}
.....
.
.
public void sectionRequestDone() {}
}

关于java - 当 Activity A 完成时, Activity A 中的方法正在 Activity B 中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51571723/

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