java - 如何在 Android 中获取上一个 Activity 中的切换按钮值?

标签 java android

我创建了一个在后台系统中运行服务的应用程序和两个 Activity 。我在 Activity1 中启动了服务,在 Activity2 中我放置了一个带有"is"和“否”的切换按钮。当我运行应用程序服务时,它在 Activity1 中启动,并且当从 Activity1 打开 Activity2 时,使用共享首选项的服务状态切换按钮状态自动为“打开”,但是当我按下切换按钮“关闭”以停止服务时,我得到了 NullPointerException.I已经尝试过,但不起作用。请任何人帮助我。这是我的代码

  public class Service_Demo extends Activity implements OnClickListener {
          private static final String TAG = "ServicesDemo";
          Button buttonStart, buttonStop;
        //  boolean value;

          @Override
          public void onCreate(Bundle savedInstanceState)
          {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            System.out.println("In OnCreate(");

            startService(new Intent(this, MyService.class));

                buttonStart = (Button) findViewById(R.id.buttonStart);
                buttonStart.setOnClickListener(this);

            boolean value=getIntent().getExtras().getBoolean("toggleBtn");
            Log.e("Boolean Value","4 toggle button in Service demo"+value);

          }
     public void onClick(View src) 
          {
                      Intent i=new Intent(this , Toggle_Activity.class);
                    startActivity(i);
                }
    }






    public class Toggle_Activity extends Activity
    {
        ToggleButton tgButton;
        private boolean isService=false;
        private String strService;
        public final String service_Prefs="servicePrefs";
        private static final String StrMyService = "zdf";
        public static boolean status=false;


        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.toggle);

            final SharedPreferences        servicePrefs=this.getSharedPreferences("Service_Prefs",MODE_WORLD_READABLE);
            strService=servicePrefs.getString(StrMyService , "myservice");
            Log.e("",""+strService);

            final boolean mBool = servicePrefs.getBoolean("myservice", true);
            Log.e("Boolean Value mBool","="+mBool);
            Boolean b = mBool;
            Log.e("Update pref", b.toString());
            tgButton = (ToggleButton)findViewById(R.id.toggleButton);
            tgButton.setChecked(mBool);




            System.out.println("*****tgButton.setChecked(mBool1);****");
            final boolean mBool1 = servicePrefs.getBoolean("myservice", false);
            Log.e("Boolean Value mBool","="+mBool1);


            final Boolean c = mBool1;
            Log.e("Update pref", c.toString());



            tgButton=(ToggleButton)findViewById(R.id.toggleButton);
            tgButton.setOnClickListener(new OnClickListener()
     {

                @Override
                public void onClick(View v) 
    {
                    // TODO Auto-generated method stub

                    if(tgButton.isChecked())
                    {
                        startService(new Intent(Toggle_Activity.this , MyService.class));
                        System.out.println("Service is started in togglr button");


                    }
                    else 
                    {   

                        stopService(new Intent(Toggle_Activity.this,MyService.class));
                        Intent intent=new Intent(Toggle_Activity.this,Service_Demo.class);
                        status=false;
                        intent.putExtra("toggleBtn",status);
                        startActivity(intent);
                    }
                }
            });


        }

 }



                                                  FATAL EXCEPTION: main
                                 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.toggle_button/com.toggle_button.Service_Demo}: java.lang.NullPointerException
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
05-15 12:44:32.154: E/AndroidRuntime(793):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
05-15 12:44:32.154: E/AndroidRuntime(793):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-15 12:44:32.154: E/AndroidRuntime(793):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
05-15 12:44:32.154: E/AndroidRuntime(793):  at android.os.Handler.dispatchMessage(Handler.java:99)
05-15 12:44:32.154: E/AndroidRuntime(793):  at android.os.Looper.loop(Looper.java:123)
05-15 12:44:32.154: E/AndroidRuntime(793):  at android.app.ActivityThread.main(ActivityThread.java:3683)
05-15 12:44:32.154: E/AndroidRuntime(793):  at java.lang.reflect.Method.invokeNative(Native Method)
05-15 12:44:32.154: E/AndroidRuntime(793):  at java.lang.reflect.Method.invoke(Method.java:507)
05-15 12:44:32.154: E/AndroidRuntime(793):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-15 12:44:32.154: E/AndroidRuntime(793):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-15 12:44:32.154: E/AndroidRuntime(793):  at dalvik.system.NativeStart.main(Native Method)
05-15 12:44:32.154: E/AndroidRuntime(793): Caused by: java.lang.NullPointerException
05-15 12:44:32.154: E/AndroidRuntime(793):  at com.toggle_button.Service_Demo.onCreate(Service_Demo.java:43)
05-15 12:44:32.154: E/AndroidRuntime(793):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-15 12:44:32.154: E/AndroidRuntime(793):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
05-15 12:44:32.154: E/AndroidRuntime(793):  ... 11 more

最佳答案

第一个 Activity :

String togvalue = togglebtn.gettext().tostring();

Intent i = new Intent(first.this, sec.class);
i.putextra("togvalue", togvalue);
startactivity(i);

第二个 Activity :

String togvalue = getIntent().getStringextra("togvalue");

关于java - 如何在 Android 中获取上一个 Activity 中的切换按钮值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16558740/

相关文章:

java - 具有恒定大小的哈希表

java - 文件选择器无法打开我的文件

android - 了解 Android "Radio State Machine"以获得更好的电池生命周期

Android Studio 从输出应用中移除库类

Android App 的工具栏标题未垂直居中

java - 如何在 Android 设备中从 Firestore 获取服务器时间戳?

java - 为什么以下程序可以在 JVM 内存模型的 JLS 规范下运行

java - 野蝇:org.xnio.channels.FixedLengthOverflowException

java - java中的数组是如何实现的?

android - 如何使用 picasso 模糊图像?