Appcompatactivity onCreate() 在实例化 class 时未被触发
Appcompatactivity onCreate() not getting triggered when instantiating a class
我仍在学习 Android 开发,我被困在一个我认为我做错了什么的地步。非常感谢您的帮助。
我有一个像这样扩展 AppCompatActivity 的主 class,在它里面,我有一个实例化另一个 class 的函数,我想在其中根据商店共享首选项进行一些计算:
public class Level1_0 extends AppCompatActivity {
.....
public void isTwoUnlocked(){
CalculateAvg calc = new CalculateAvg();
boolean L = calc.level2();
if(L == true){
showPopup();
calc.finish();
}
}
.....
}
CalculateAvg 是我正在实例化的 class。 class 有一个名为 level2() 的方法,这是我进行一些检查的地方,return True 或 False 作为布尔值。当我 运行 代码时,init() 永远不会被 onCreate() 调用。我也尝试在 onCreate 本身中编写整个 init 代码,仍然是同样的问题,onCreate 永远不会被触发。
计算平均值 class
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
public class CalculateAvg extends AppCompatActivity{
public static final String SHARED_PREFS = "sharedPrefs";
private static final String TAG = "Level1_0";
level10 = sharedPreferences.getBoolean(LEVEL10, false);
........
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
}
public void init(){
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
........
// do my calculations here but init() never gets called by onCreate().
// I even tried writing entire code inside onCreate but it also didn't work
}
public boolean level2(){
boolean L = false;
if(level10 == null){
L = false;
}
else{
L = true;
}
return L;
}
}
知道为什么当我在我的 main class 中实例化它时没有触发 onCreate 吗?
这个 Android 不是 java 你不能调用 activity 创建新实例来从 Level1_0 调用 CalculateAvg 在 Level1_0 onCreate 中执行下面的代码().
public class Level1_0 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent =new Intent(this,CalculateAvg.class);
startActivity(intent);
}
}
根据您的要求不需要使用AppCompatActivity
。您可以简单地使用 like class
并传递 context
来访问 SharedPreferences
.
public class CalculateAvg {
private Context mContext;
....
public CalculateAvg(Context context) {
mContext = context;
init();
}
public void init(){
SharedPreferences sharedPreferences = mContext.getSharedPreferences(SHARED_PREFS, Context.MODE_PRIVATE);
....
}
public boolean level2(){
boolean L = false;
if(level10 == null){
L = false;
}
else{
L = true;
}
return L;
}
}
并使用您的 activity 的上下文实例化 CalculateAvg
,如下所示:
CalculateAvg calc = new CalculateAvg(Level1_0.this);
我仍在学习 Android 开发,我被困在一个我认为我做错了什么的地步。非常感谢您的帮助。
我有一个像这样扩展 AppCompatActivity 的主 class,在它里面,我有一个实例化另一个 class 的函数,我想在其中根据商店共享首选项进行一些计算:
public class Level1_0 extends AppCompatActivity {
.....
public void isTwoUnlocked(){
CalculateAvg calc = new CalculateAvg();
boolean L = calc.level2();
if(L == true){
showPopup();
calc.finish();
}
}
.....
}
CalculateAvg 是我正在实例化的 class。 class 有一个名为 level2() 的方法,这是我进行一些检查的地方,return True 或 False 作为布尔值。当我 运行 代码时,init() 永远不会被 onCreate() 调用。我也尝试在 onCreate 本身中编写整个 init 代码,仍然是同样的问题,onCreate 永远不会被触发。
计算平均值 class
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
public class CalculateAvg extends AppCompatActivity{
public static final String SHARED_PREFS = "sharedPrefs";
private static final String TAG = "Level1_0";
level10 = sharedPreferences.getBoolean(LEVEL10, false);
........
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
}
public void init(){
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
........
// do my calculations here but init() never gets called by onCreate().
// I even tried writing entire code inside onCreate but it also didn't work
}
public boolean level2(){
boolean L = false;
if(level10 == null){
L = false;
}
else{
L = true;
}
return L;
}
}
知道为什么当我在我的 main class 中实例化它时没有触发 onCreate 吗?
这个 Android 不是 java 你不能调用 activity 创建新实例来从 Level1_0 调用 CalculateAvg 在 Level1_0 onCreate 中执行下面的代码().
public class Level1_0 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent =new Intent(this,CalculateAvg.class);
startActivity(intent);
}
}
根据您的要求不需要使用AppCompatActivity
。您可以简单地使用 like class
并传递 context
来访问 SharedPreferences
.
public class CalculateAvg {
private Context mContext;
....
public CalculateAvg(Context context) {
mContext = context;
init();
}
public void init(){
SharedPreferences sharedPreferences = mContext.getSharedPreferences(SHARED_PREFS, Context.MODE_PRIVATE);
....
}
public boolean level2(){
boolean L = false;
if(level10 == null){
L = false;
}
else{
L = true;
}
return L;
}
}
并使用您的 activity 的上下文实例化 CalculateAvg
,如下所示:
CalculateAvg calc = new CalculateAvg(Level1_0.this);