> 文章列表 > 安卓在子类中调用父类的方法

安卓在子类中调用父类的方法

安卓在子类中调用父类的方法

非常抱歉,可能是我表述不够清楚。在实际开发中,调用 getParentActivity() 方法需要在子界面中获取到父界面的实例。可以通过以下几种方式来获取父界面实例:

在子界面创建时保存父界面实例
在父界面中提供一个公共静态方法,返回当前 Activity 的实例。在子界面中创建时通过该方法获取当前的父界面实例。

代码示例:

java
public class ChildActivity extends AppCompatActivity {
private MainActivity mParentActivity;

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 获取父界面实例mParentActivity = MainActivity.getParentActivity();
}private void doSomethingInParentActivity() {// 在子界面中访问父界面中的属性和方法mParentActivity.doSomething();
}

}

public class MainActivity extends AppCompatActivity {
private static MainActivity sActivity;

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sActivity = this;
}// 在父界面中提供一个公共静态方法,返回当前 Activity 的实例
public static MainActivity getParentActivity() {return sActivity;
}public void doSomething() {// 在父界面中的方法
}

}
在 Intent 中传递父界面实例
在父界面中创建 Intent 时将当前的 Activity 实例作为额外参数传递给子界面,在子界面中使用 getIntent() 方法获取 Intent ,然后调用 getParcelableExtra() 方法获取父界面实例。

代码示例:

java
public class ChildActivity extends AppCompatActivity {
private MainActivity mParentActivity;

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 获取父界面实例mParentActivity = getIntent().getParcelableExtra("parent_activity");
}private void doSomethingInParentActivity() {// 在子界面中访问父界面中的属性和方法mParentActivity.doSomething();
}

}

public class MainActivity extends AppCompatActivity {
private void openChildActivity() {
Intent intent = new Intent(this, ChildActivity.class);
intent.putExtra(“parent_activity”, this);
startActivity(intent);
}

public void doSomething() {// 在父界面中的方法
}

}
无论使用哪种方式来获取父界面实例,都可以在子界面中访问父界面的属性和方法。