我的 android 应用程序中有一个 TextView 和 ImageButton 对象,它们在应用程序启动(onCreate)时正确显示,但是当调用 saveInstanceState() 和 RestoreInstanceState() 时,编译器会抛出 nullPointerException (即使它们的状态已正确加载)我尝试设置文本或任何与此相关的内容。我还有一些其他 ImageButtons 两次都正确显示(在第一次 onCreate 时,以及在调用 RestoreInstanceState 时),所以它让我更加困惑。
我曾尝试创建 TextView 的另一个实例,为其设置 Text,然后将该 TextView 设置为原始实例,但它不起作用。
public class MainActivity extends AppCompatActivity {
private TextView score;
private TextView labelPoints;
private ImageButton finQuest;
private int langFlag = 0;
private PowerManager.WakeLock wakeLock;
private int points = 0;
private ListenerQuestionChooser lqc;
//saving and loading the instanceState of the buttons bellow works perfectly
private ImageButton btn1;
private ImageButton btn2;
private ImageButton btn3;
private ImageButton btn4;
private ImageButton btn5;
private ImageButton btn6;
@SuppressLint("InvalidWakeLockTag")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock");
wakeLock.acquire();
setContentView(R.layout.activity_main);
labelPoints = findViewById(R.id.total_score);
finQuest = findViewById(R.id.btn_finanswer);
score = findViewById(R.id.text_points);
btn1 = findViewById(R.id.btn1);
btn2 = findViewById(R.id.btn2);
btn3 = findViewById(R.id.btn3);
btn4 = findViewById(R.id.btn4);
btn5 = findViewById(R.id.btn5);
btn6 = findViewById(R.id.btn6);
}
最终编辑:经过大约 16 个小时的头撞墙、尝试各种事情(逻辑和不逻辑的)并在每一步上打印日志,我解决了这个问题。所以这就是解决方案(我仍然不明白为什么其他对象在没有这个的情况下可以完美工作,而这些对象需要它,但是嘿,只要它有效,我就会接受它)。
至尊宝的传说
侃侃无极
相关分类