gpt4 book ai didi

java - Android:仅从父 Activity 调用子 Activity 的函数

转载 作者:行者123 更新时间:2023-12-01 11:16:19 25 4
gpt4 key购买 nike

我的ParentActivity.java是这样的

public class ParentActivity extends Activity{

public void childOnlyMethod(){
Log.d(TAG,"child only method triggered in parent activity");
}

public void startChildActivtityButton(){
startActivity(new Intent(this, ChildActivity.class));
}
public void childOnlyMethodButton(){
childOnlyMethod();
}
}

我的ChildActivity.java是这样的

public class ChildActivity extends ParentActivity{
@Override
public void childOnlyMethod(){
Log.d(TAG,"child only method triggered in child activity");
}
}

问题是,当我在父 Activity 和子 Activity 中按下childOnlyMethodButton时,childOnlyMethod()都会被调用,我希望仅在子 Activity 上调用它,如何才能实现这一点?

最佳答案

@Override注解什么也不做,它只是用来告诉编译器和IDE这个方法重写了它的父类(super class)。非静态方法与对象相关联,而不是与类相关联。覆盖意味着完全替换其父类(super class)中的方法。因此,如果您在 ChildActivity 上调用 childOnlyMethod,则只会调用子版本。

我猜您实际上是在单击父 Activity 实例。我真的不明白为什么你想在父引用上调用子方法。如果你能贴出真实的代码,我可以给你更准确的答案。

但是,您可以尝试以下代码。此示例将仅在 ChildActivity 实例上调用子版本 childOnlyMethod。但如果您单击 ParentActivity 上的按钮,它仍然会调用父级的 childOnlyMethod。

public class ParentActivity extends Activity implements View.OnClickListener {
private static final String TAG = "ParentActivity";

private Button mStartChileButton;
private Button mButton;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mStartChileButton = (Button) findViewById(R.id.startChileButton);
mButton = (Button) findViewById(R.id.button);

mStartChileButton.setOnClickListener(this);
mButton.setOnClickListener(this);
}

public void onClick(View v) {
switch(v.getId()) {
case R.id.R.id.startChileButton:
startActivity(new Intent(this, ChildActivity.class));
break;
case R.id.R.id.button:
default:
childOnlyMethod();
break;
}
}

public void childOnlyMethod() {
Log.d(TAG, "Called from ParentActivity");
}
}

public class ChildActivity extends ParentActivity {
private static final String TAG = "ChildActivity";

@Override
public void childOnlyMethod() {
Log.d(TAG, "Called from ChildActivity");
}
}

关于java - Android:仅从父 Activity 调用子 Activity 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31790689/

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