如何在按下时保存切换按钮状态

时间:2014-03-10 07:33:42

标签: android

我想保存togglebutton的状态,以便在活动未激活时通过检查togglebutton的状态来运行服务。这是Activity类的编码。无论用户保存到togglebtn,服务都必须按此运行。

public class MainActivity extends Activity implements OnClickListener {

    ToggleButton tgl;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tgl=(ToggleButton)findViewById(R.id.toggleButton1);
        tgl.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        if(tgl.isChecked()){
            Intent i=new Intent(MainActivity.this,Run.class);
            startService(i);
        }else{

        }
    }
    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        if(tgl.isChecked()){
            tgl.setChecked(true);
        }else{

        }

        super.onBackPressed();
    }

}

3 个答案:

答案 0 :(得分:1)

我建议将切换按钮的状态保持在首选项中,并在需要时检索它们(此处在背面按下)。我希望你从以下代码中得到一个想法:

保存:

@Override
public void onClick(View v) 
{
    if (toggle.isChecked()) 
    {
        SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
        editor.putBoolean("NameOfThingToSave", true);
        editor.commit();
    }
    else
    {
        SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
        editor.putBoolean("NameOfThingToSave", false);
        editor.commit();
    }
}

加载:

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    SharedPreferences sharedPrefs = getSharedPreferences("com.example.xyle", MODE_PRIVATE);
    toggle.setChecked(sharedPrefs.getBoolean("NameOfThingToSave", true));
}

答案 1 :(得分:0)

  

在此任何用户保存togglebtn中,服务必须按此运行。

使用sharePreference商店& ToggleButton的反转状态,基于执行动作。

答案 2 :(得分:0)

您可以使用静态布尔变量来存储状态。

public class MainActivity extends Activity implements OnClickListener {

    ToggleButton tgl;
    private static boolean tglState = false;

    public static boolean getState() {
        return tglState;
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tgl=(ToggleButton)findViewById(R.id.toggleButton1);
        tgl.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        if(tgl.isChecked()){
            Intent i=new Intent(MainActivity.this,Run.class);
            startService(i);
        }else{

        }
        tglState = tgl.isChecked();
    }
    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        if(tgl.isChecked()){
            tgl.setChecked(true);
        }else{

        }

        super.onBackPressed();
    }

}

使用

从其他课程中阅读
MainActivity.getState()

您可以在应用程序运行时使用它。