Back button
上に表示して、Action bar
前のページ/アクティビティまたはメインページ(最初のオープニング)に移動しようとしています。そして、私はそれを行うことができません。
私のコード。
ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
コードはにありonCreate
ます。
Back button
上に表示して、Action bar
前のページ/アクティビティまたはメインページ(最初のオープニング)に移動しようとしています。そして、私はそれを行うことができません。
私のコード。
ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
コードはにありonCreate
ます。
回答:
よくこれは戻るボタンを表示する簡単なものです
actionBar.setDisplayHomeAsUpEnabled(true);
そして、あなたはonOptionsItemSelectedでbackイベントをカスタマイズできます
case android.R.id.home:
this.finish();
return true;
これonSupportNavigateUp()
を行うのが最善かつ最も簡単な方法だと思います。以下の手順を確認してください。ステップ1は必須ですが、ステップ2には別の方法があります。
ステップ1戻るボタンを表示:この行をonCreate()
メソッドに追加して、戻るボタンを表示します。
assert getSupportActionBar() != null; //null check
getSupportActionBar().setDisplayHomeAsUpEnabled(true); //show back button
ステップ2バッククリックの実装:このメソッドをオーバーライドする
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}
ザッツそれはあなたが完了している
または、ステップ2の代替:あなたはとしてマニフェストファイルに活動にメタを追加することができます
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="MainActivity" />
編集:あなたが使用していない場合はAppCompat
使用しないで、その後の活動をsupport
言葉を、あなたが使用することができます
getActionBar().setDisplayHomeAsUpEnabled(true); // In `OnCreate();`
// And override this method
@Override
public boolean onNavigateUp(){
finish();
return true;
}
コメントしてくれた@atariguyに感謝します。
onOptionsItemSelected
解決策を試しましたが、失敗しました。
getActionBar().setDisplayHomeAsUpEnabled(true);
@Override public boolean onNavigateUp(){ finish(); return true; }
魔法はで起こりonOptionsItemSelected
ます。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; go home
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
getActionBar().setDisplayHomeAsUpEnabled(true);
最初にonCreateMethod を追加して、[戻る]ボタンを追加する必要があります
this.onBackPressed();
ユーザーが戻るボタンをクリックしたときにメソッドを使用します。
公式ソリューション
これら2つのコードスニペットをサブアクティビティに追加します
@Override
public void onCreate(Bundle savedInstanceState) {
...
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
メタデータとparentActivityをマニフェストに追加して、下位SDKをサポートします。
<application ... >
...
<!-- The main/home activity (it has no parent activity) -->
<activity
android:name="com.example.myfirstapp.MainActivity" ...>
...
</activity>
<!-- A child of the main activity -->
<activity
android:name="com.example.myfirstapp.SubActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>
ここで参照:http : //developer.android.com/training/implementing-navigation/ancestral.html
これらの行をonCreate()に追加します
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
およびonOptionItemSelected
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
//Write your logic here
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
これがあなたに役立つことを願っています。
このコードを試してください。戻るボタンが必要な場合にのみ考慮してください。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//YOUR CODE
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//YOUR CODE
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
onBackPressed();
return true;
}
あなたのonCreate
メソッドに追加:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
AndroidManifest.xml
親アクティビティ(アクションバーの[戻る]ボタンが押されたときに呼び出されるアクティビティ)を定義している間:
あなたには<activity>
マニフェストの定義、行を追加します。
android:parentActivityName="com.example.activities.MyParentActivity"
私は少し遅れていることを知っていますが、ドキュメントを直接フォローすることでこの問題を修正することができました。
メタデータタグを追加するAndroidManifest.xml
(システムが認識できるようにするため)
<activity
android:name=".Sub"
android:label="Sub-Activity"
android:parentActivityName=".MainChooser"
android:theme="@style/AppTheme.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainChooser" />
</activity>
次に、あなたのバック(上)ボタンを有効にします MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_child);
// my_child_toolbar is defined in the layout file
Toolbar myChildToolbar =
(Toolbar) findViewById(R.id.my_child_toolbar);
setSupportActionBar(myChildToolbar);
// Get a support ActionBar corresponding to this toolbar
ActionBar ab = getSupportActionBar();
// Enable the Up button
ab.setDisplayHomeAsUpEnabled(true);
}
そして、あなたはすべてセットアップされます!
上記が多くの役立つ解決策であることは知っていますが、今回はこの記事(現在のAndroid Studio 2.1.2 with sdk 23)を読んで、上記のいくつかの方法が機能しません。
以下はサブアクティビティの私の解決策はMapsActivityです
まず、parentActivityを
AndroidManifest.xml
このような :
<application ... >
...
<!-- Main activity (which has no parent activity) -->
<activity
android:name="com.example.myapp.MainActivity" ...>
...
</activity>
<!-- A child of the main activity -->
<activity
.....
android:parentActivityName=".MainActivity" >
<!-- Support Parent activity for Android 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myapp.MainActivity" />
</activity>
</application>
次に、AppCompatActivity
FragmentActivityではなく、サブアクティビティが拡張されることを確認します。
3番目に、onOptionsItemSelected()
メソッドをオーバーライドする
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon action bar is clicked; go to parent activity
this.finish();
return true;
case R.id.action_settings:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
これが役立つことを願っています!
あなたのonCreate()でこれを試してください
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
クリックイベントの場合、
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; goto parent activity.
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
これを達成するには、2つのステップがあります。
手順1:に移動しAndroidManifest.xml
て、このパラメーターを<activity>
タグに追加します-android:parentActivityName=".home.HomeActivity"
例:
<activity
android:name=".home.ActivityDetail"
android:parentActivityName=".home.HomeActivity"
android:screenOrientation="portrait" />
ステップ2:前のページ/アクティビティをActivityDetail
追加するaction
例:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
onCreateメソッドの書き込み
Toolbar toolbar = findViewById(R.id.tool);
setSupportActionBar(toolbar);
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
@Override
public void onBackPressed() {
super.onBackPressed();
startActivity(new Intent(ActivityOne.this, ActivityTwo.class));
finish();
}
これはxmlファイルです
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:id="@+id/tool">
そしてstyles.xmlでそれを
Theme.AppCompat.Light.NoActionBar
これが私たちがしなければならないことのすべてです。
これは簡単で、私にはとてもうまくいきます
これをonCreate()メソッドの中に追加します
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
これを外部のoncreate()メソッドに追加します
@Override
public boolean onOptionsItemSelected(MenuItem item) {
onBackPressed();
return true;
}
あなたのonCreate()
方法でこの行を追加してください
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
同じアクティビティで、このメソッドを追加してボタンのクリックを処理します
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
this.finish();
return true;
}
return super.onOptionsItemSelected(item);
}
私はこのように解決しました
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onBackPressed(){
Intent backMainTest = new Intent(this,MainTest.class);
startActivity(backMainTest);
finish();
}
画面に戻るための私の作業コード。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Toast.makeText(getApplicationContext(), "Home Clicked",
Toast.LENGTH_LONG).show();
// go to previous activity
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
public void initToolbar(){
//this set back button
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//this is set custom image to back button
getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_btn_image);
}
//this method call when you press back button
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}
ActionBar actionBar=getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
答えるには遅すぎるかもしれませんが、私は私の意見ではより短くより機能的な解決策を持っています。
// Inside your onCreate method, add these.
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
// After the method's closing bracket, add the following method exactly as it is and voiulla, a fully functional back arrow appears at the action bar
@Override
public boolean onOptionsItemSelected(MenuItem item) {
onBackPressed();
return true;
}
oncreate(); この行を書く->
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
次に、そのクラスに以下のメソッドを実装します
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; go home
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Manifest.xml
<activity
android:name=".Activity.SecondActivity"
android:label="Second Activity"
android:parentActivityName=".Activity.MainActivity"
android:screenOrientation="portrait"></activity>
Kotlinでアクションバーの戻るボタンを表示 するには、それを実装する2つの方法があります
1. Androidが提供するデフォルトのアクションバーを使用する -アクティビティでは、アクションバーのあるテーマを使用する必要があります-例:Theme.AppCompat.Light.DarkActionBar
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val actionBar = supportActionBar
actionBar!!.title = "your title"
actionBar.setDisplayHomeAsUpEnabled(true)
//actionBar.setDisplayHomeAsUpEnabled(true)
}
override fun onSupportNavigateUp(): Boolean {
onBackPressed()
return true
}
2.独自のアクションバーを設計します -デフォルトのアクションバーを無効にします-例:Theme.AppCompat.Light.NoActionBar-レイアウトをactivity.xmlに追加します
<androidx.appcompat.widget.Toolbar
android:id="@+id/main_toolbar"
android:layout_width="match_parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout_editor_absoluteX="16dp">
<TextView
android:id="@+id/main_toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Your Title"
android:textSize="25sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.appcompat.widget.Toolbar>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setSupportActionBar(findViewById(R.id.main_toolbar))
}
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/main_action_toolbar"
android:icon="@drawable/ic_main_toolbar_item"
android:title="find"
android:layout_width="80dp"
android:layout_height="35dp"
app:actionLayout="@layout/toolbar_item"
app:showAsAction="always"/>
</menu>
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.main_toolbar_item, menu)
leftToolbarItems = menu!!.findItem(R.id.main_action_toolbar)
val actionView = leftToolbarItems.actionView
val badgeTextView = actionView.findViewById<TextView>(R.id.main_action_toolbar_badge)
badgeTextView.visibility = View.GONE
actionView.setOnClickListener {
println("click on tool bar")
}
return super.onCreateOptionsMenu(menu)
}
以下のコードをonCreate関数に追加します。
getSupportActionBar()。setDisplayHomeAsUpEnabled(true);
次にオーバーライドします。@Override public boolean onOptionsItemSelected(MenuItem item){onBackPressed(); trueを返します。}
更新されたバージョンでは、getActionBar()は機能しません。
代わりに、この方法でこれを行うことができます
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
Androidのタイトルバーに戻るボタンを追加すると、2020年に役立ちます