0

我有一个包含字符串、方法等的活动。我想使用另一个活动来阅读它。这是我的代码。

Activitymain.java

public class Activitymain extends Activity{

public String input;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_main);
        input = "This is the input";
}

另一个活动。

第二幕.java

public class SecondAct extends Activity{

        @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.secon_act);
                Activitymain am = (Activitymain) this;
                Toast.maketext(this, ""+am.input,Toast.LENGTH_LONG).show();
        }

但是当我去另一个活动时它崩溃了。这是日志:

11-14 14:42:45.000: E/AndroidRuntime(16457): FATAL EXCEPTION: main
11-14 14:42:45.000: E/AndroidRuntime(16457): java.lang.NullPointerException
11-14 14:42:45.000: E/AndroidRuntime(16457):    at com.example.tabs.SecondAct.Start_Call(SecondAct.java:384)
11-14 14:42:45.000: E/AndroidRuntime(16457):    at com.example.tabs.SecondAct$1.onClick(SecondAct.java:420)
11-14 14:42:45.000: E/AndroidRuntime(16457):    at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:946)
11-14 14:42:45.000: E/AndroidRuntime(16457):    at android.widget.AdapterView.performItemClick(AdapterView.java:298)
11-14 14:42:45.000: E/AndroidRuntime(16457):    at android.widget.AbsListView.performItemClick(AbsListView.java:1114)
11-14 14:42:45.000: E/AndroidRuntime(16457):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:2933)
11-14 14:42:45.000: E/AndroidRuntime(16457):    at android.widget.AbsListView$1.run(AbsListView.java:3691)
11-14 14:42:45.000: E/AndroidRuntime(16457):    at android.os.Handler.handleCallback(Handler.java:615)
11-14 14:42:45.000: E/AndroidRuntime(16457):    at android.os.Handler.dispatchMessage(Handler.java:92)
11-14 14:42:45.000: E/AndroidRuntime(16457):    at android.os.Looper.loop(Looper.java:153)
11-14 14:42:45.000: E/AndroidRuntime(16457):    at android.app.ActivityThread.main(ActivityThread.java:5086)
11-14 14:42:45.000: E/AndroidRuntime(16457):    at java.lang.reflect.Method.invokeNative(Native Method)
11-14 14:42:45.000: E/AndroidRuntime(16457):    at java.lang.reflect.Method.invoke(Method.java:511)
11-14 14:42:45.000: E/AndroidRuntime(16457):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
11-14 14:42:45.000: E/AndroidRuntime(16457):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
11-14 14:42:45.000: E/AndroidRuntime(16457):    at dalvik.system.NativeStart.main(Native Method)
4

2 回答 2

0

在 SecondAct.java 中试试这个:

public class SecondAct extends Activity{

        @Override
            protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
                setContentView(R.layout.secon_act);                
                Toast.maketext(this, ""+Activitymain.input,Toast.LENGTH_LONG).show();
        }

并且不要忘记在Activitymaininput中启动字符串。

于 2013-11-14T06:47:04.893 回答
0

有很多方法可以做到这一点。

第一:当您从 Activitymain 启动 SecondAct 时,您可以在 bundle 中传递数据。

第二:在某处创建一个全局静态变量。在Activitymain中设置,在SecondAct中获取。

第三:为您的整个应用程序创建一个单例类,以将数据存储在 Activitymain 中并从 SecondAct 中获取该数据。

如果您对单例示例感兴趣,请查看这篇文章

于 2013-11-14T06:53:07.087 回答