【问题标题】:Error switching activity错误切换活动
【发布时间】:2013-08-01 08:51:07
【问题描述】:

我在尝试从一项活动 (com.intelligent.stocktrader.MyAccount) 切换到另一项活动 (com.intelligent.stocktrader.SharePerformanceDetails) 时出错。我做错了什么? 我的代码没有错误。
以下是日志猫内容:

E/AndroidRuntime(787):致命异常:主要 E/AndroidRuntime(787): java.lang.RuntimeException:无法启动活动 组件信息{com.intelligent.stocktrader/com.intelligent.stocktrader.SharePerformanceDetails}: java.lang.RuntimeException: Parcelable遇到IOException写 可序列化对象(名称 = org.achartengine.chart.LineChart) E/AndroidRuntime(787):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955) E/AndroidRuntime(787):在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)

MyAccount 活动 onCreate 在哪里切换活动

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_performance);
    //Bundle extras = getIntent().getExtras();
    //stock_name = extras.getString("stock");
    //new PerformanceDetails().execute();   
    LineGraph line=new LineGraph();
    Intent intent=line.getIntent(getApplicationContext());
    startActivity(intent);
}

LineGraph 类

public Intent getIntent(Context context){

    -----------
            -----------
    return intent;
}

LineGraph 类有一个方法会返回一个意图。这是错误传播的地方

【问题讨论】:

  • 发布您的代码,您在意图中放入的对象有些东西
  • 您的活动shareperformancedetails 是否已在您的清单中注册?
  • 可能表明您的类不可序列化。 org.achartengine.chart.LineChart
  • 是的,Karan 清单是最新的。
  • 请同时发布您的清单

标签: android


【解决方案1】:

那是因为您的 Intent 包含无法序列化的 LineChart。你应该从 java.io.Serializable 实现 LineChart。

【讨论】:

  • 贾里德,我该怎么做?
  • 公共类 LineChart 实现可序列化。并使其嵌套的复杂类型都实现 Serializable 接口。
【解决方案2】:

在 onclick() 上使用以下代码它会起作用-

Intent i = new Intent(getApplicationContext(), SecondScreen.class);
StartActivity(i);

要运行我们的应用程序,您应该在 AndroidManifest.xml 文件中输入您的新活动。在标签之间添加新的Activity:

<activity android:name=".NewActivityClassName"></activity>

【讨论】:

    【解决方案3】:

    试试这个:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_performance);
    //Bundle extras = getIntent().getExtras();
    //stock_name = extras.getString("stock");
    //new PerformanceDetails().execute();   
    LineGraph line=new LineGraph();
    Intent intent=new Intent(getApplicationContext(),SharePerformanceDetails.class); // EDITED
    startActivity(intent);
    

    }

    【讨论】:

    • 您可能想将 LineGraph 转移到另一个活动,对吧?
    • Dino,是的。实际上是在调用 LineGraph 类,它有一个类会返回一个 Intent 给 SharePerformanceDetails 类。
    • @mungaihkamau 我相信你确信它有效。不考虑其他答案,您应该确保正确返回 Intent。
    • 它的工作。从另一个测试应用程序它工作正常。但是当我尝试在我的项目中实现相同的,问题突然出现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多