我有一个 Java 语言的程序,它无法启动一个活动。

huangapple go评论93阅读模式
英文:

I am having a java lang which it can't start an activity

问题

  1. private void init(){
  2. Log.d(TAG, "init: inflating " + getString(R.string.profile_fragment));
  3. Intent intent = getIntent();
  4. if(intent.hasExtra(getString(R.string.calling_activity))){
  5. Log.d(TAG, "init: searching for user object attached as intent extra");
  6. if(intent.hasExtra(getString(R.string.intent_user))){
  7. User user = intent.getParcelableExtra(getString(R.string.intent_user));
  8. if(!user.getUser_id().equals(FirebaseAuth.getInstance().getCurrentUser().getUid())){
  9. Log.d(TAG, "init: inflating view profile");
  10. ViewProfileFragment fragment = new ViewProfileFragment();
  11. Bundle args = new Bundle();
  12. args.putParcelable(getString(R.string.intent_user),
  13. intent.getParcelableExtra(getString(R.string.intent_user)));
  14. fragment.setArguments(args);
  15. FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
  16. transaction.replace(R.id.container, fragment);
  17. transaction.addToBackStack(getString(R.string.view_profile_fragment));
  18. transaction.commit();
  19. }else{
  20. Log.d(TAG, "init: inflating Profile");
  21. ProfileFragment fragment = new ProfileFragment();
  22. FragmentTransaction transaction = ProfileActivity.this.getSupportFragmentManager().beginTransaction();
  23. transaction.replace(R.id.container, fragment);
  24. transaction.addToBackStack(getString(R.string.profile_fragment));
  25. transaction.commit();
  26. }
  27. }else{
  28. Toast.makeText(mContext, "something went wrong", Toast.LENGTH_SHORT).show();
  29. }
  30. }else{
  31. Log.d(TAG, "init: inflating Profile");
  32. ProfileFragment fragment = new ProfileFragment();
  33. FragmentTransaction transaction = ProfileActivity.this.getSupportFragmentManager().beginTransaction();
  34. transaction.replace(R.id.container, fragment);
  35. transaction.addToBackStack(getString(R.string.profile_fragment));
  36. transaction.commit();
  37. }
  38. }
  39. public class User implements Parcelable{
  40. private String user_id;
  41. private long phone_number;
  42. private String email;
  43. private String username;
  44. private String status;
  45. public User(String user_id, long phone_number, String email, String username) {
  46. this.user_id = user_id;
  47. this.phone_number = phone_number;
  48. this.email = email;
  49. this.username = username;
  50. this.status = status;
  51. }
  52. public User() {
  53. }
  54. protected User(Parcel in) {
  55. user_id = in.readString();
  56. phone_number = in.readLong();
  57. email = in.readString();
  58. username = in.readString();
  59. }
  60. public static final Creator<User> CREATOR = new Creator<User>() {
  61. @Override
  62. public User createFromParcel(Parcel in) {
  63. return new User(in);
  64. }
  65. @Override
  66. public User[] newArray(int size) {
  67. return new User[size];
  68. }
  69. };
  70. public String getUser_id() {
  71. return user_id;
  72. }
  73. public void setUser_id(String user_id) {
  74. this.user_id = user_id;
  75. }
  76. public long getPhone_number() {
  77. return phone_number;
  78. }
  79. public void setPhone_number(long phone_number) {
  80. this.phone_number = phone_number;
  81. }
  82. public String getEmail() {
  83. return email;
  84. }
  85. public void setEmail(String email) {
  86. this.email = email;
  87. }
  88. public String getUsername() {
  89. return username;
  90. }
  91. public void setUsername(String username) {
  92. this.username = username;
  93. }
  94. public String getStatus() {
  95. return status;
  96. }
  97. public void setStatus(String status) {
  98. this.status = status;
  99. }
  100. @Override
  101. public String toString() {
  102. return "User{" +
  103. "user_id='" + user_id + '\'' +
  104. ", phone_number=" + phone_number +
  105. ", email='" + email + '\'' +
  106. ", username='" + username + '\'' +
  107. ", status='" + status + '\'' +
  108. '}';
  109. }
  110. @Override
  111. public int describeContents() {
  112. return 0;
  113. }
  114. @Override
  115. public void writeToParcel(Parcel dest, int flags) {
  116. dest.writeString(user_id);
  117. dest.writeLong(phone_number);
  118. dest.writeString(email);
  119. dest.writeString(username);
  120. dest.writeString(status);
  121. }
  122. }
  1. E/AndroidRuntime: FATAL EXCEPTION: main
  2. Process: umo.com.players, PID: 3876
  3. java.lang.RuntimeException: Unable to start activity ComponentInfo{umo.com.players/umo.com.players.Profile.ProfileActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling:
  4. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2868)
  5. at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2958)
  6. at android.app.ActivityThread.-wrap12(Unknown Source:0)
  7. at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1653)
  8. at android.os.Handler.dispatchMessage(Handler.java:106)
  9. at android.os.Looper.loop(Looper.java:164)
  10. at android.app.ActivityThread.main(ActivityThread.java:6739)
  11. at java.lang.reflect.Method.invoke(Native Method)
  12. at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:449)
  13. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
  14. Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling:
  15. at android.os.Parcel.readParcelableCreator(Parcel.java:2925)
  16. at android.os.Parcel.readParcelable(Parcel.java:2851)
  17. at android.os.Parcel.readParcelableArray(Parcel.java:2959)
  18. at android.os.Parcel.readValue(Parcel.java:2808)
  19. at android.os.Parcel.readArrayMapInternal(Parcel.java:3123)
  20. at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:273)
  21. at android.os.BaseBundle.unparcel(BaseBundle.java:226)
  22. at android.os.BaseBundle.containsKey(BaseBundle.java:467)
  23. at android.content.Intent.hasExtra(Intent.java:6971)
  24. at umo.com.players.Profile.ProfileActivity.init(ProfileActivity.java:92)
  25. at umo.com.players.Profile.ProfileActivity.onCreate(ProfileActivity.java:83)
  26. at android.app.Activity.performCreate(Activity.java:7045)
  27. at android.app.Activity.performCreate(Activity.java:7036)
  28. at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1217)
  29. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2815)
  30. at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2958)
  31. at android.app.ActivityThread.-wrap12(Unknown Source:0)
  32. at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1653)
  33. at android.os.Handler.dispatchMessage(Handler.java:106)
  34. at android.os.Looper.loop(Looper.java:164)
  35. at android.app.ActivityThread.main(ActivityThread.java:6739)
  36. at java.lang.reflect.Method.invoke(Native Method)
  37. at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:449)
  38. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
英文:

profile fragment
I am Having a java lang exception which can't start activity how can I fix this please help
I am new at this and I need to finish my project today please help

The log cat is below the profile fragment

profile fragment
I am Having a java lang exception which can't start activity how can I fix this please help
I am new at this and I need to finish my project today please help

The log cat is below the profile fragment

  1. private void init(){
  2. Log.d(TAG, &quot;init: inflating &quot; + getString(R.string.profile_fragment));
  3. Intent intent = getIntent();
  4. if(intent.hasExtra(getString(R.string.calling_activity))){
  5. Log.d(TAG, &quot;init: searching for user object attached as intent extra&quot;);
  6. if(intent.hasExtra(getString(R.string.intent_user))){
  7. User user = intent.getParcelableExtra(getString(R.string.intent_user));
  8. if(!user.getUser_id().equals(FirebaseAuth.getInstance().getCurrentUser().getUid())){
  9. Log.d(TAG, &quot;init: inflating view profile&quot;);
  10. ViewProfileFragment fragment = new ViewProfileFragment();
  11. Bundle args = new Bundle();
  12. args.putParcelable(getString(R.string.intent_user),
  13. intent.getParcelableExtra(getString(R.string.intent_user)));
  14. fragment.setArguments(args);
  15. FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
  16. transaction.replace(R.id.container, fragment);
  17. transaction.addToBackStack(getString(R.string.view_profile_fragment));
  18. transaction.commit();
  19. }else{
  20. Log.d(TAG, &quot;init: inflating Profile&quot;);
  21. ProfileFragment fragment = new ProfileFragment();
  22. FragmentTransaction transaction = ProfileActivity.this.getSupportFragmentManager().beginTransaction();
  23. transaction.replace(R.id.container, fragment);
  24. transaction.addToBackStack(getString(R.string.profile_fragment));
  25. transaction.commit();
  26. }
  27. }else{
  28. Toast.makeText(mContext, &quot;something went wrong&quot;, Toast.LENGTH_SHORT).show();
  29. }
  30. }else{
  31. Log.d(TAG, &quot;init: inflating Profile&quot;);
  32. ProfileFragment fragment = new ProfileFragment();
  33. FragmentTransaction transaction = ProfileActivity.this.getSupportFragmentManager().beginTransaction();
  34. transaction.replace(R.id.container, fragment);
  35. transaction.addToBackStack(getString(R.string.profile_fragment));
  36. transaction.commit();
  37. }
  38. }

here is the user class

  1. public class User implements Parcelable{
  2. private String user_id;
  3. private long phone_number;
  4. private String email;
  5. private String username;
  6. private String status;
  7. public User(String user_id, long phone_number, String email, String username) {
  8. this.user_id = user_id;
  9. this.phone_number = phone_number;
  10. this.email = email;
  11. this.username = username;
  12. this.status = status;
  13. }
  14. public User() {
  15. }
  16. protected User(Parcel in) {
  17. user_id = in.readString();
  18. phone_number = in.readLong();
  19. email = in.readString();
  20. username = in.readString();
  21. }
  22. public static final Creator&lt;User&gt; CREATOR = new Creator&lt;User&gt;() {
  23. @Override
  24. public User createFromParcel(Parcel in) {
  25. return new User(in);
  26. }
  27. @Override
  28. public User[] newArray(int size) {
  29. return new User[size];
  30. }
  31. };
  32. public String getUser_id() {
  33. return user_id;
  34. }
  35. public void setUser_id(String user_id) {
  36. this.user_id = user_id;
  37. }
  38. public long getPhone_number() {
  39. return phone_number;
  40. }
  41. public void setPhone_number(long phone_number) {
  42. this.phone_number = phone_number;
  43. }
  44. public String getEmail() {
  45. return email;
  46. }
  47. public void setEmail(String email) {
  48. this.email = email;
  49. }
  50. public String getUsername() {
  51. return username;
  52. }
  53. public void setUsername(String username) {
  54. this.username = username;
  55. }
  56. public String getStatus() {
  57. return status;
  58. }
  59. public void setStatus(String status) {
  60. this.status = status;
  61. }
  62. @Override
  63. public String toString() {
  64. return &quot;User{&quot; +
  65. &quot;user_id=&#39;&quot; + user_id + &#39;\&#39;&#39; +
  66. &quot;, phone_number=&quot; + phone_number +
  67. &quot;, email=&#39;&quot; + email + &#39;\&#39;&#39; +
  68. &quot;, username=&#39;&quot; + username + &#39;\&#39;&#39; +
  69. &quot;, status=&#39;&quot; + status + &#39;\&#39;&#39; +
  70. &#39;}&#39;;
  71. }
  72. @Override
  73. public int describeContents() {
  74. return 0;
  75. }
  76. @Override
  77. public void writeToParcel(Parcel dest, int flags) {
  78. dest.writeString(user_id);
  79. dest.writeLong(phone_number);
  80. dest.writeString(email);
  81. dest.writeString(username);
  82. dest.writeString(status);
  83. }

}

logcat

  1. E/AndroidRuntime: FATAL EXCEPTION: main
  2. Process: umo.com.players, PID: 3876
  3. java.lang.RuntimeException: Unable to start activity ComponentInfo{umo.com.players/umo.com.players.Profile.ProfileActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling:
  4. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2868)
  5. at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2958)
  6. at android.app.ActivityThread.-wrap12(Unknown Source:0)
  7. at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1653)
  8. at android.os.Handler.dispatchMessage(Handler.java:106)
  9. at android.os.Looper.loop(Looper.java:164)
  10. at android.app.ActivityThread.main(ActivityThread.java:6739)
  11. at java.lang.reflect.Method.invoke(Native Method)
  12. at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:449)
  13. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
  14. Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling:
  15. at android.os.Parcel.readParcelableCreator(Parcel.java:2925)
  16. at android.os.Parcel.readParcelable(Parcel.java:2851)
  17. at android.os.Parcel.readParcelableArray(Parcel.java:2959)
  18. at android.os.Parcel.readValue(Parcel.java:2808)
  19. at android.os.Parcel.readArrayMapInternal(Parcel.java:3123)
  20. at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:273)
  21. at android.os.BaseBundle.unparcel(BaseBundle.java:226)
  22. at android.os.BaseBundle.containsKey(BaseBundle.java:467)
  23. at android.content.Intent.hasExtra(Intent.java:6971)
  24. at umo.com.players.Profile.ProfileActivity.init(ProfileActivity.java:92)
  25. at umo.com.players.Profile.ProfileActivity.onCreate(ProfileActivity.java:83)
  26. at android.app.Activity.performCreate(Activity.java:7045)
  27. at android.app.Activity.performCreate(Activity.java:7036)
  28. at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1217)
  29. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2815)
  30. at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2958)
  31. at android.app.ActivityThread.-wrap12(Unknown Source:0)
  32. at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1653)
  33. at android.os.Handler.dispatchMessage(Handler.java:106)
  34. at android.os.Looper.loop(Looper.java:164)
  35. at android.app.ActivityThread.main(ActivityThread.java:6739)
  36. at java.lang.reflect.Method.invoke(Native Method)
  37. at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:449)
  38. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

答案1

得分: 0

如何理解发生了什么...

查看堆栈跟踪...

  1. Caused by: android.os.BadParcelableException: 在解组时出现 ClassNotFoundException
  2. at android.os.Parcel.readParcelableCreator(Parcel.java:2925)
  3. at android.os.Parcel.readParcelable(Parcel.java:2851)
  4. at android.os.Parcel.readParcelableArray(Parcel.java:2959)
  5. at android.os.Parcel.readValue(Parcel.java:2808)
  6. at android.os.Parcel.readArrayMapInternal(Parcel.java:3123)
  7. at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:273)
  8. at android.os.BaseBundle.unparcel(BaseBundle.java:226)
  9. at android.os.BaseBundle.containsKey(BaseBundle.java:467)
  10. at android.content.Intent.hasExtra(Intent.java:6971)
  11. at umo.com.players.Profile.ProfileActivity.init(ProfileActivity.java:92)
  12. at umo.com.players.Profile.ProfileActivity.onCreate(ProfileActivity.java:83)
  13. at android.app.Activity.performCreate(Activity.java:7045)
  14. at android.app.Activity.performCreate(Activity.java:7036)

从堆栈跟踪中最底部开始,找到与您的代码库相关的部分(提示:查找以您的项目包名称开头的行):

  1. at umo.com.players.Profile.ProfileActivity.onCreate(ProfileActivity.java:83)

您可以看到在 ProfileActivity 的第 83 行调用了一些代码。从底部往上分析堆栈。如果您理解了关于堆栈的推入/弹出操作,将有助于更轻松地理解其余部分。尝试在堆栈跟踪中导航,您会在某个地方找到抛出异常的原因。

英文:

How to understand whats going on...

Look at the stack trace...

  1. Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling:
  2. at android.os.Parcel.readParcelableCreator(Parcel.java:2925)
  3. at android.os.Parcel.readParcelable(Parcel.java:2851)
  4. at android.os.Parcel.readParcelableArray(Parcel.java:2959)
  5. at android.os.Parcel.readValue(Parcel.java:2808)
  6. at android.os.Parcel.readArrayMapInternal(Parcel.java:3123)
  7. at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:273)
  8. at android.os.BaseBundle.unparcel(BaseBundle.java:226)
  9. at android.os.BaseBundle.containsKey(BaseBundle.java:467)
  10. at android.content.Intent.hasExtra(Intent.java:6971)
  11. at umo.com.players.Profile.ProfileActivity.init(ProfileActivity.java:92)
  12. at umo.com.players.Profile.ProfileActivity.onCreate(ProfileActivity.java:83)
  13. at android.app.Activity.performCreate(Activity.java:7045)
  14. at android.app.Activity.performCreate(Activity.java:7036)

Starting at the line lowest down in the stack trace that looks like its relevant to your codebase (hint: look lines starting with your project's package name) :

  1. at umo.com.players.Profile.ProfileActivity.onCreate(ProfileActivity.java:83)

You can see some line of code was called in ProfileActivity on line 83. Work your way up the stack. If you understand you push/pop on stacks it makes understanding the rest easier. Try to navigate through the lines in the stack trace and somewhere you'll find the cause of the exception being thrown.

答案2

得分: 0

你忘记在构造函数中添加 status

  1. public User(String user_id, long phone_number, String email, String username, String status) {
  2. this.user_id = user_id;
  3. this.phone_number = phone_number;
  4. this.email = email;
  5. this.username = username;
  6. this.status = status;
  7. }

并且添加初始化 status

  1. protected User(Parcel in) {
  2. user_id = in.readString();
  3. phone_number = in.readLong();
  4. email = in.readString();
  5. username = in.readString();
  6. status = in.readString();
  7. }
英文:

You forgot to add the status into constructor:

  1. public User(String user_id, long phone_number, String email, String username, String status) {
  2. this.user_id = user_id;
  3. this.phone_number = phone_number;
  4. this.email = email;
  5. this.username = username;
  6. this.status = status;
  7. }

And add initialization status:

  1. protected User(Parcel in) {
  2. user_id = in.readString();
  3. phone_number = in.readLong();
  4. email = in.readString();
  5. username = in.readString();
  6. status = in.readString();
  7. }

huangapple
  • 本文由 发表于 2020年10月16日 02:59:28
  • 转载请务必保留本文链接:https://go.coder-hub.com/64378100.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定