私のアプリにツールバーを設定しましたが(初めて)、クリックすると何かをするためのホーム(/上)ボタンを設定できません。 私は3つのアクティビティ(MainActivity、Second、Third)を持っていますが、3つのツールバーすべてを定義しましたが、アクティビティの各ボタンでHomeボタンをクリックすると何も起こりません。それは "MainActivity"であるHome Activityに戻ります。ここでツールバーの上ボタンは何もしません
は、いくつかの関連するコードです: ツールバーのレイアウト(命名:app_bar.xml):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/toolBar_background"
android:elevation="5dp"
android:title="@string/app_name" />
</RelativeLayout>
私の3つの活動は、XMLSをレイアウト: Activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="com.example.noamm_000.finaltoolbarproject.MainActivity">
<include layout="@layout/app_bar"/>
//More layout code...
Activity_Second.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.noamm_000.finaltoolbarproject.Second">
<include layout="@layout/app_bar"/>
//More layout code...
Activity_Third.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.noamm_000.finaltoolbarproject.Third">
<include layout="@layout/app_bar"/>
//More layout code
実際には、すべての3つのアクティビティには、単に「app_bar.xml」という名前のツールバーレイアウトが含まれています。
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Second"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
<intent-filter>
<action android:name="com.example.noamm_000.finaltoolbarproject.Second" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".Third"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
<intent-filter>
<action android:name="com.example.noamm_000.finaltoolbarproject.Third" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
と私の3つの活動のそれぞれのための私のJavaコードの一部ofcourseの: MainActivity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar_id);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);
mainBtn = (Button) findViewById(R.id.btn_main);
openSecondActivity();
}
public void openSecondActivity(){
mainBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent("com.example.noamm_000.finaltoolbarproject.Second");
startActivity(intent);
}
});
SecondActivityここ
は私がapp_parentを構成し、私のMainfestファイルの一部です:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
btnSecond = (Button) findViewById(R.id.btn_second);
toolbar = (Toolbar) findViewById(R.id.toolbar_id);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);
openThirdActivity();
}
public void openThirdActivity(){
btnSecond.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent("com.example.noamm_000.finaltoolbarproject.Third");
startActivity(intent);
}
});
}
および第3のアクテビティ:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
toolbar = (Toolbar) findViewById(R.id.toolbar_id);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);
}
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.toolbar_menu,menu);
return super.onCreateOptionsMenu(menu);
}
あなたはすべての3活動「のonCreate」の機能はほとんど同じであることがわかります。.. 私は私のアプリを起動すると、私はすべての3つの活動にツールバーを見ることができると私はすべてに戻る矢印を見ることができますが、クリックすると何もしません。 ノーム
ありがとう、それは働いたが、私はこのonOptionsItemSelected関数を使用して定義する必要はありません、このボタンのためのdefaullt関数が存在しないですか? – Noam
@ Noam..itはこのボタンのデフォルト機能です。ツールバーの上ボタンがあなたの特定のタスクを定義する必要がある場合は、それを定義する必要があります... –
@Noam私のコードはあなたを親に連れて行きますバックスタックを通過するのではなく、アクティビティを実行します。また、Intent.Flagを追加してバックスタックをクリアしました。ホームアクティビティに行くときに便利な機能です。ユーザーが 'Up'ボタンを使用しているときに、バックスタックが混乱するのを防ぐことができます。 –