Java Can';无法在屏幕上显示设置选项
编辑在底部添加了Java Can';无法在屏幕上显示设置选项,java,android,android-studio,sharedpreferences,preferences,Java,Android,Android Studio,Sharedpreferences,Preferences,编辑在底部添加了MyActivity.java(即主活动) EDIT2在MyActivity.java中添加了行(这解决了问题) 我已设置了首选项,但无法访问它们。无论我在xml中选择了什么style,也不管我在Android Studio(AS)1.1.0中选择了什么虚拟设备或样式,屏幕都缺少下面显示的3个点。甚至包括LightActionBar和DarkActionBar在内的下拉样式也没有显示点 在xml中,我尝试了,这最终在昨晚的一个小应用程序上成功(遇到了同样的问题),而且,对于父应
MyActivity.java
(即主活动)
EDIT2在MyActivity.java
中添加了行(这解决了问题)
我已设置了首选项,但无法访问它们。无论我在xml中选择了什么style
,也不管我在Android Studio(AS)1.1.0中选择了什么虚拟设备或样式,屏幕都缺少下面显示的3个点。甚至包括LightActionBar
和DarkActionBar
在内的下拉样式也没有显示点
在xml中,我尝试了
,这最终在昨晚的一个小应用程序上成功(遇到了同样的问题),而且,对于父应用程序,我尝试了Base.Theme.AppCompat.Light.DarkActionBar
和其他东西
我不太在乎我是否看到了3个点;只要显示首选项屏幕即可
我还尝试了从不
,ifroom
,以及始终
,用于showAsAction
:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MyActivity">
<item android:id="@+id/itemFocus"
android:title="@string/focusAtClue"
android:orderInCategory="200"
app:showAsAction="never"/>
下面是设置片段.java
:
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.util.Log;
public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity());
if (key.equalsIgnoreCase("pie_type")){
Log.w("Settings", sharedPref.getString(key, ""));
}
}
}
import android.app.Activity;
import android.os.Bundle;
public class SettingsActivity extends Activity {
public static final String SETTINGS = "com.whatever.kakurocombosbuildvariants.settings";
public static final String FIRST_USE = "com.whateverkakurocombosbuildvariants.firstUse";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
}
}
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId()) {
case R.id.menu_settings:
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
和设置活动.java
:
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.util.Log;
public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity());
if (key.equalsIgnoreCase("pie_type")){
Log.w("Settings", sharedPref.getString(key, ""));
}
}
}
import android.app.Activity;
import android.os.Bundle;
public class SettingsActivity extends Activity {
public static final String SETTINGS = "com.whatever.kakurocombosbuildvariants.settings";
public static final String FIRST_USE = "com.whateverkakurocombosbuildvariants.firstUse";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
}
}
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId()) {
case R.id.menu_settings:
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
这里是在MyActivity.java
中调用SettingsActivity
的地方:
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.util.Log;
public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity());
if (key.equalsIgnoreCase("pie_type")){
Log.w("Settings", sharedPref.getString(key, ""));
}
}
}
import android.app.Activity;
import android.os.Bundle;
public class SettingsActivity extends Activity {
public static final String SETTINGS = "com.whatever.kakurocombosbuildvariants.settings";
public static final String FIRST_USE = "com.whateverkakurocombosbuildvariants.firstUse";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
}
}
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId()) {
case R.id.menu_settings:
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
MyActivity.java
(主活动;删除300行无关代码)
///////////////////////编辑2////////////////////////////
@Override public boolean onCreateOptionsMenu(Menu menu)
{ getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
///////////////////////EDIT2/////p>主要问题似乎是您并没有夸大菜单xml
@Override public boolean onCreateOptionsMenu(Menu menu)
{ getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public class MyActivity extends ActionBarActivity{
//...........
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
//............
}
尝试将ActionBarActivity
用于您的main活动
,并添加onCreateOptions菜单()
,以膨胀菜单xml
public class MyActivity extends ActionBarActivity{
//...........
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
//............
}
您需要加载菜单:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.<your_menu>, menu);
//...
}
@覆盖
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(右菜单,菜单);
//...
}
尝试使设置活动
扩展AppCompativity
或ActionBarActivity
@DanielNugent--公共类设置活动扩展AppCompativity
出现错误--无法解决AppCompativity
和公共类设置活动扩展ActionBarActivity
不存在错误显示点。等等,这是图片中的设置活动
还是main活动
?您的问题是否无法从main活动
到设置活动
?啊,好的。您可以添加主活动代码吗?这就是问题所在。啊,是的。无论如何,设置对话框上没有理由有一个操作栏。通常的做法是在设置屏幕上使用首选项活动
。嘿。。。我只是注意到了这一点,并将其添加到代码中。谢谢你叫醒我@当然,没问题!我从一开始就有一种感觉,这就是问题所在@丹尼尔——我想我是个傻瓜。我把它写下来并突出显示以添加代码,但每次检查时都会跳过它。再次感谢。我现在有一个不同的问题,但至少我有办法看到prefs。你得到了答案,但另一个人,他整个下午都在陪我,首先得到了答案。谢谢你的回复。