简体   繁体   English

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

[英]Calling a Method or String in other Activity

I had an Activity that contains a String,Method etc. I want to read it using another Activity. 我有一个包含字符串,方法等的活动。我想使用另一个活动来读取它。 Here is my code. 这是我的代码。

Activitymain.java 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";
}

The other Activity. 其他活动。

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

But it crashes when I go to the other Activity. 但是当我转到另一个活动时它崩溃了。 Here is the log: 这是日志:

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)

Try this in SecondAct.java: 在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();
        }

And don't forget to initiate input string in Activitymain . 并且不要忘记在Activitymain中初始化input字符串。

There is lots of ways to do this. 有很多方法可以做到这一点。

First: You can pass the data in bundle when you are starting the SecondAct from Activitymain. 第一:从Activitymain启动SecondAct时,可以捆绑形式传递数据。

Second: Create a global static variable somewhere. 第二:在某处创建全局静态变量。 Set it in Activitymain and get it in SecondAct. 在Activitymain中设置它,并在SecondAct中获得它。

Third: Create a singleton class for your whole application to store the data in Activitymain and get that data from SecondAct. 第三:为整个应用程序创建一个单例类,以将数据存储在Activitymain中,并从SecondAct中获取该数据。

Check out this post if you are interested Singleton Example 如果您对Singleton示例感兴趣,请查看此帖子。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM