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

他のアクティビティ。

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

しかし、他のアクティビティに行くとクラッシュします。ログは次のとおりです。

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

これを行う方法はたくさんあります。

最初: Activitymain から SecondAct を開始するときに、バンドルでデータを渡すことができます。

2番目:どこかにグローバル静的変数を作成します。Activitymain で設定し、SecondAct で取得します。

3 番目: アプリケーション全体のシングルトン クラスを作成して、データを Activitymain に格納し、そのデータを SecondAct から取得します。

興味がある場合は、この投稿をチェックしてくださいシングルトンの例

于 2013-11-14T06:53:07.087 に答える
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 に答える