出于某种原因,当我选择列表项但我们的手机上有溢出点时,我的平板电脑上没有出现溢出点用于我的主要细节应用程序。尽管使用了必要的代码,但我不确定为什么会发生。是否有任何代码缺失或不应该存在?
MainActivity.java
public class MainActivity extends ActionBarActivity {
private boolean mTwoPane;
@Override
protected void onCreate(Bundle savedInstanceState) {
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if (menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
}
catch (Exception e) {
e.printStackTrace();
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(getResources().getString(R.string.greeting));
FragmentMainList newFragment = new FragmentMainList();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.master_container, newFragment);
transaction.commit();
if (findViewById(R.id.detail_container) != null) {
mTwoPane = true;
}
}
}
活动类
public class MyProductActivity extends ActionBarActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_fragment);
if (savedInstanceState == null) {
FragmentProduct newFragment = new FragmentProduct();
FragmentTransaction transaction = this.getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.detail_container, newFragment);
transaction.commit();
}
ActionBar actionBar = getSupportActionBar();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.my_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
final Intent intent = NavUtils.getParentActivityIntent(this);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
NavUtils.navigateUpTo(this, intent);
return true;
}
return super.onOptionsItemSelected(item);
}
}
片段类
public class FragmentProduct extends android.support.v4.app.Fragment {
public FragmentProduct() {}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_product, container, false);
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
View v = getView();
super.onActivityCreated(savedInstanceState);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
final Intent intent = NavUtils.getParentActivityIntent(getActivity());
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
NavUtils.navigateUpTo(getActivity(), intent);
return true;
}
int id = item.getItemId();
if (id == R.id.action_options) {
}
return super.onOptionsItemSelected(item);
}
}
答案 0 :(得分:1)
只有没有硬件菜单按钮的设备才会显示这些点。对于带有硬件菜单按钮的设备,没有显示溢出点,因为点击菜单按钮也会这样做。 更多here
修改强>
如果由于某种原因您确实要展示它,可以在Application.onCreate()
或主要(启动器)活动onCreate()
// force show actionbar 'overflow' button on devices with hardware menu button
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if (menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
}
catch (Exception e) {
e.printStackTrace();
}