如何改进这些代码?我试着在API29的应用程序上使用它,但每次我在构建后打开应用程序时,我的应用程序就崩溃了。我在Stackoverflow中找到了这些代码,但由于SharedPefrences等一些功能被弃用而不再工作,我尝试使用新的SharedPeference管理器,但应用程序仍然崩溃。
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class NavigatorActivity extends AppCompatActivity {
public static final String KEY_CHOICE = "choice";
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// fetch the choice of the user, or return -1 if there is no choice yet
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this);
int choice = prefs.getInt(KEY_CHOICE, -1);
Intent intent = createIntentBasedOnChoice(this, choice);
startActivity(intent);
finish();
}
// this method returns an Intent based on the passed choice parameter
public static Intent createIntentBasedOnChoice(Context context, int choice) {
Intent intent;
switch (choice) {
case 1: {
intent = new Intent(context, AspirantActivity.class);
break;
}
case 2: {
intent = new Intent(context, StudentActivity.class);
break;
}
case 3: {
intent = new Intent(context, AspirantActivity.class);
break;
}
case 4: {
intent = new Intent(context, StudentActivity.class);
break;
}
default: {
// if there is no choice yet, start the ChoiceActivity
intent = new Intent(context, ChoiceActivity.class);
break;
}
}
return intent;
}
}
然后我有choiceactivity
,它应该指导用户选择一个布局为XML的选项。
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.Button;
import android.widget.RadioGroup;
public class ChoiceActivity extends AppCompatActivity {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_choice);
final RadioGroup choiceGroup = (RadioGroup) findViewById(
R.id.group_choices);
Button submitButton = (Button) findViewById(R.id.button_submit);
submitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int choice;
switch (choiceGroup.getCheckedRadioButtonId()) {
case R.id.button_choice1: {
choice = 1;
break;
}
case R.id.button_choice2: {
choice = 2;
break;
}
case R.id.button_choice3: {
choice = 3;
break;
}
case R.id.button_choice4: {
choice = 4;
break;
}
default: {
choice = 1;
break;
}
}
// saving the choice of the user
getSharedPreferences(
"com.sckoolboy.app_preferences", Context.MODE_PRIVATE)
.edit()
.putInt(NavigatorActivity.KEY_CHOICE, choice)
.apply();
Intent intent = NavigatorActivity
.createIntentBasedOnChoice(ChoiceActivity.this, choice);
startActivity(intent);
finish();
}
});
}
}
这是使用无线电组的ChoiceActivity的XML布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RadioGroup
android:id="@+id/group_choices"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/button_choice1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Choice 1" />
<RadioButton
android:id="@+id/button_choice2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Choice 2" />
<RadioButton
android:id="@+id/button_choice3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Choice 3" />
<RadioButton
android:id="@+id/button_choice4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Choice 4" />
</RadioGroup>
<Button
android:id="@+id/button_submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is my choice!" />
</LinearLayout>
请问我什么是不对的,如何才能在我的应用程序中不崩溃的代码工作?
我们将非常感谢所有的帮助和帮助。
编辑:这里是堆栈跟踪
Fatal Exception: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.sckoolboy.app/com.sckoolboy.app.b0}; have you declared this activity in your AndroidManifest.xml?
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2016)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1673)
at android.app.Activity.startActivityForResult(Activity.java:4689)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:10)
at android.app.Activity.startActivityForResult(Activity.java:4647)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:10)
at android.app.Activity.startActivity(Activity.java:5008)
at android.app.Activity.startActivity(Activity.java:4976)
at com.sckoolboy.app.Splash$1.run(Splash.java:11)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7045)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
我建议您使用Jetpack Datastore而不是SharedPreferences。这将解决所有API级别的特定问题。
链接:-https://developer.android.com/topic/libraries/architecture/datastore
使用djanog的异步如何改写下边这段代码:
如何在PHP Smarty中优化这段代码? 现在我有一个代码让我困惑,有一个简单的代码。 当我搜索需要推送值的代码时。 优化如何发挥作用?我能写到数组吗?如果它可以写入数组,我该怎么办?
我已经开始学习JavaScript,我试图制作一个加载条的动画,但我不知道如何使它在条到达终点后重复这个功能,我想也许通过一个循环我可以得到我想要的结果,但我仍然在学习循环,我尝试了不同的方法,改变了整个代码,但没有任何效果。 有人能帮我吗?谢谢你抽出时间。
我正在为我的discord机器人制作一个管理cog,我的代码无法识别“ctx”。PyCharm建议用“self”代替“ctx”,我不知道“self”是做什么的。从PyCharm所说的,还有数以百万计的其他东西,我必须写下它是什么。PyCharm无法识别帮会、发送、作者和频道,它还说是一个无法访问的代码。请注意,如果这似乎是一个非常愚蠢的问题,我是一个初学者,两周前就开始了。 至于代码:
实际上,下面的代码不能用这个命令用Clang编译: . 我只想模仿与C中的“交换习惯用法”相同的行为,使用“using directive”来启用ADL。但是下面的代码哪里错了呢?预期的调用优先级应为:N1::foo 错误消息: 更新: 我将N2::foo更改为可以在某种程度上模仿std::交换的模板方法。所以,这里的问题是为什么不能由在函数中?因为当它们具有相同的优先级时,该函数应该比要调用的模
问题内容: 我的问题主要是关于性能。编译器更好地了解,例如,对象实例化后未修改某些变量。那么,为什么还要打入决赛呢? 我认为这里可能会出现许多结构/逻辑原因,但从性能角度来讲?有关系吗? 谢谢, 问题答案: 在 现代 JVM中,final 不应 影响性能。这对于私有字段尤其如此,但是即使对于非私有字段,JIT仍可以将非最终字段视为最终字段,从而对其进行优化,然后,如果它加载了一些确实修改了该字段的