我想启用片段中的主页按钮。这个问题早先提出,但是对于一项活动 我试过......
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
...但这不起作用。
这是我的代码:
import com.actionbarsherlock.R;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.view.MenuItem;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
public class SafanTab extends SherlockFragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.safantab, container, false);
}
public OnClickListener onOverClick = new OnClickListener() {
@Override
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), Over_Safan.class);
startActivityForResult(myIntent, 0);
}
};
public OnClickListener onProductenClick = new OnClickListener() {
@Override
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), Over_Safan.class);
startActivityForResult(myIntent, 0);
}
};
public OnClickListener onTwitterClick = new OnClickListener() {
@Override
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), Over_Safan.class);
startActivityForResult(myIntent, 0);
}
};
}
如何在SherlockFragment上启用主页按钮?
答案 0 :(得分:25)
您还需要覆盖选项菜单选项:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
请注意,上面的代码会在一个活动中运行(因此finish()
)。如果您不使用Activity
(这对我来说很奇怪......),那么您需要替换它。
答案 1 :(得分:13)
您是否尝试将以下代码添加到主要活动中 - extends SherlockActivity
或extends SherlockFragmentActivity
?
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
我认为只有getSupportActionBar
才能extends SherlockFragment
{/ 1}}。
答案 2 :(得分:0)
最简单的解决方案是遵循以下三个简单步骤:
1 - 在您的活动的父级AndroidManifest
中声明:
<activity android:theme="@style/Theme.MyApp"
android:name="com.example.CurrentActivity"
android:parentActivityName="com.example.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.ParentActivity" />
2 - 在操作栏中添加“向上”图标,只需使用onCreate
方法调用:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
3 - 指定用户按下向上按钮时要打开的活动:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
注意:强> 如果你打电话(按照@Eric的建议):
finish();
而不是:
NavUtils.navigateUpFromSameTask(this);
你并没有真正表现出“向上导航”,因为documentation说:
向上导航与系统“后退”按钮提供的后退导航不同。后退按钮用于通过用户最近使用的屏幕历史以反向时间顺序导航。它通常基于屏幕之间的时间关系,而不是应用程序的层次结构(这是向上导航的基础)。