在其他Activity中调用方法或字符串

时间:2013-11-14 06:38:15

标签: java android methods android-activity toast

我有一个包含String,Method等的Activity。我想用另一个Activity读取它。这是我的代码。

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";
}

另一项活动。

SecondAct.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();
        }

但是当我去另一个Activity时它会崩溃。 这是日志:

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)

2 个答案:

答案 0 :(得分: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();
        }

不要忘记在 Activitymain 中发起input字符串。

答案 1 :(得分:0)

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

  

首先:您可以在启动时传递数据包   来自Activitymain的SecondAct。

     

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

     

第三步:为整个应用程序创建一个单例类进行存储   Activitymain中的数据并从SecondAct获取该数据。

如果您对[{3}}

感兴趣,请查看此帖子