【发布时间】:2020-07-15 20:31:30
【问题描述】:
我想将一个片段的值发送到另一个片段。我的代码:
片段 1:
int finishedLevels;
int skippedLevels;
int usedHints;
int failedLevels;
public static final String FINISHED_LEVELS = "com.example.rexan_snerficonquiz.Quiz_Fragment.FINISHED_LEVELS";
public static final String SKIPPED_LEVELS = "com.example.rexan_snerficonquiz.Quiz_Fragment.SKIPPED_LEVELS";
public static final String FAILED_LEVELS = "com.example.rexan_snerficonquiz.Quiz_Fragment.FAILED_LEVELS";
public static final String USED_HINTS = "com.example.rexan_snerficonquiz.Quiz_Fragment.USED_HINTS";
public void openActifity2(){
Intent intent = new Intent(getActivity().getApplication(), Quiz_Fragment.class);
intent.putExtra(FINISHED_LEVELS, finishedLevels);
intent.putExtra(FAILED_LEVELS, failedLevels);
intent.putExtra(USED_HINTS, usedHints);
intent.putExtra(SKIPPED_LEVELS, skippedLevels);
startActivity(intent);
}
片段 2:
import static com.example.rexan_snerficonquiz.Quiz_Fragment.FAILED_LEVELS;
import static com.example.rexan_snerficonquiz.Quiz_Fragment.FINISHED_LEVELS;
import static com.example.rexan_snerficonquiz.Quiz_Fragment.SKIPPED_LEVELS;
import static com.example.rexan_snerficonquiz.Quiz_Fragment.USED_HINTS;
int finishedLevels = getActivity().getIntent().getIntExtra(FINISHED_LEVELS,0);
int failedLevels = getActivity().getIntent().getIntExtra(FAILED_LEVELS, 0);
int skippedLevels = getActivity().getIntent().getIntExtra(SKIPPED_LEVELS, 0);
int usedHints = getActivity().getIntent().getIntExtra(USED_HINTS, 0);
我认为我发现了一个问题
Intent intent = new Intent(getActivity().getApplication(), Quiz_Fragment.class);
因为源和目标是必需的。但是因为它在一个片段中,所以我必须在上课之前写“getActivity().getApplication()”。 所以我用
Intent intent = new Intent(getActivity().getApplication(), Quiz_Fragment.class,getActivity().getApplication(),Fragment_score.class);
,但这被标记为错误。这也是:
Intent intent = new Intent(getActivity().getApplication(), Quiz_Fragment.class,Fragment_score.class);
上面的代码“我认为我看到了一个问题”没有被标记为错误。但是当我使用应用程序并且值发生变化时,应用程序崩溃了。 错误代码是:
E/AndroidRuntime: 致命异常: main 进程:com.example.rexan_snerficonquiz,PID:18240 android.content.ActivityNotFoundException:无法找到显式活动类 {com.example.rexan_snerficonquiz/com.example.rexan_snerficonquiz.Fragment_score};您是否在 AndroidManifest.xml 中声明了此活动? 在 android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2065) 在 android.app.Instrumentation.execStartActivity(Instrumentation.java:1727) 在 android.app.Activity.startActivityForResult(Activity.java:5314) 在 androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676) 在 androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:234) 在 androidx.fragment.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:791) 在 androidx.fragment.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:933) 在 androidx.fragment.app.Fragment.startActivity(Fragment.java:1185) 在 androidx.fragment.app.Fragment.startActivity(Fragment.java:1173) 在 com.example.rexan_snerficonquiz.Quiz_Fragment.openActifity2(Quiz_Fragment.java:251) 在 com.example.rexan_snerficonquiz.Quiz_Fragment$2.onClick(Quiz_Fragment.java:101) 在 android.view.View.performClick(View.java:7438) 在 android.view.View.performClickInternal(View.java:7415) 在 android.view.View.access$3600(View.java:810) 在 android.view.View$PerformClick.run(View.java:28286) 在 android.os.Handler.handleCallback(Handler.java:938) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:223) 在 android.app.ActivityThread.main(ActivityThread.java:7523) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)
但这在我看来没有任何意义。 如果我改变了
Intent intent = new Intent(getActivity().getApplication(), Quiz_Fragment.class);
(来源)到
Intent intent = new Intent(getActivity().getApplication(), Framgent_score.class);
(目标)错误代码将“Quiz_Fragment”的所有内容更改为“Fragment_score”。
【问题讨论】:
-
显示您的清单。 Intent 用于活动,而不是片段
标签: java android android-studio android-fragments