Android 如何在设置中显示特定属性
在我的Android应用程序中,我有一个带有四个属性的设置布局。 您可以从Android 如何在设置中显示特定属性,android,android-layout,Android,Android Layout,在我的Android应用程序中,我有一个带有四个属性的设置布局。 您可以从main活动和通知活动调用设置。为此,我已覆盖此方法: @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_settings: Intent intent = new Intent(this, Settin
main活动
和通知活动
调用设置。为此,我已覆盖此方法:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
}
}
要显示设置,我有以下两个类:
public class SettingsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
}
}
public class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// preference_general -> layout with 4 properties
addPreferencesFromResource(R.xml.preference_general);
}
}
我想做的是:如果从main活动
调用设置,我想显示所有四个属性,但是如果从NoticeActivity
调用设置,我只想显示前三个属性
如何在不创建第二个布局的情况下执行此操作?您可以通过在两个活动的意图中定义一些常量来执行此操作。例如:
Intent intent = new Intent(this, SettingsActivity.class);
intent.putExtra("Activity","first_activity");
startActivity(intent);
public class SettingsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent i = getIntent();
String checkingValue = i.getStringExtra("Activity");
if(checkingValue != null){ //Or something else
//setting layout with four properties
}else{
//setting layout with three properties
}
}
}
记住,两个活动中的“活动”名称应该相同。
并在设置活动中使用检查调用特定设置。例如:
Intent intent = new Intent(this, SettingsActivity.class);
intent.putExtra("Activity","first_activity");
startActivity(intent);
public class SettingsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent i = getIntent();
String checkingValue = i.getStringExtra("Activity");
if(checkingValue != null){ //Or something else
//setting layout with four properties
}else{
//setting layout with three properties
}
}
}
希望这有帮助 您只需在两个活动的意图中定义一些常量即可做到这一点。例如:
Intent intent = new Intent(this, SettingsActivity.class);
intent.putExtra("Activity","first_activity");
startActivity(intent);
public class SettingsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent i = getIntent();
String checkingValue = i.getStringExtra("Activity");
if(checkingValue != null){ //Or something else
//setting layout with four properties
}else{
//setting layout with three properties
}
}
}
记住,两个活动中的“活动”名称应该相同。
并在设置活动中使用检查调用特定设置。例如:
Intent intent = new Intent(this, SettingsActivity.class);
intent.putExtra("Activity","first_activity");
startActivity(intent);
public class SettingsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent i = getIntent();
String checkingValue = i.getStringExtra("Activity");
if(checkingValue != null){ //Or something else
//setting layout with four properties
}else{
//setting layout with three properties
}
}
}
希望这有帮助 我让它为我工作。不知道它是否编程良好
public class SettingsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String activity = getIntent().getStringExtra("Activity"); // Before starting Intent, put class name as Extra
if (activity != null && activity.equals("Main")) {
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment_Main())
.commit();
} else {
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment_Notice())
.commit();
}
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.registerOnSharedPreferenceChangeListener(this);
}
public static class SettingsFragment_Main extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference_general);
}
}
public static class SettingsFragment_Notice extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// first set layout, otherwise the preference will be null
addPreferencesFromResource(R.xml.preference_general);
// Disable the Preference
Preference preference = findPreference(Constants.FOLDER_DEST_SETTING_KEY);
preference.setEnabled(false);
}
}
}
我让它为我工作。不知道它是否编程良好
public class SettingsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String activity = getIntent().getStringExtra("Activity"); // Before starting Intent, put class name as Extra
if (activity != null && activity.equals("Main")) {
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment_Main())
.commit();
} else {
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment_Notice())
.commit();
}
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.registerOnSharedPreferenceChangeListener(this);
}
public static class SettingsFragment_Main extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference_general);
}
}
public static class SettingsFragment_Notice extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// first set layout, otherwise the preference will be null
addPreferencesFromResource(R.xml.preference_general);
// Disable the Preference
Preference preference = findPreference(Constants.FOLDER_DEST_SETTING_KEY);
preference.setEnabled(false);
}
}
}
我也有这个想法。但是我有两个几乎相同的布局。如果我想更改设置,我必须更改两个布局。我想在某个时候我会因此而遇到问题。根据你的需要,试着隐藏一些按钮。用4个按钮进行布局,为了显示3个按钮,隐藏第4个按钮。这也应该有助于我实现这个想法。但是我有两个几乎相同的布局。如果我想更改设置,我必须更改两个布局。我想在某个时候我会因此而遇到问题。根据你的需要,试着隐藏一些按钮。使用4个按钮进行布局,如果要显示3个按钮,请隐藏第4个按钮。这应该会有所帮助