Java 如何在安卓系统中点击主页图标
我有一个带有单个活动的测试应用程序,who's layout有一个Java 如何在安卓系统中点击主页图标,java,android,xml,android-fragments,Java,Android,Xml,Android Fragments,我有一个带有单个活动的测试应用程序,who's layout有一个FrameLayout。有两个片段,MainDisplay.java在应用程序启动时以编程方式加载,而AccountSetup.java则在用户单击菜单并选择AccountSetup时加载。当前,当用户进入帐户设置时,AccountSetup.java会将菜单更改为菜单_secondary.xml,该菜单具有一个主项,用布局中的起始片段替换片段。我已经找到了如何添加一个“您需要替换 if (id == R.id.home) {
FrameLayout
。有两个片段,MainDisplay.java在应用程序启动时以编程方式加载,而AccountSetup.java则在用户单击菜单并选择AccountSetup时加载。当前,当用户进入帐户设置时,AccountSetup.java会将菜单更改为菜单_secondary.xml,该菜单具有一个主项,用布局中的起始片段替换片段。我已经找到了如何添加一个“您需要替换
if (id == R.id.home) {
System.out.println("Up button pressed");
}
与
请点击此链接,并进行相应更改
if (id == android.R.id.home) {
System.out.println("Up button pressed");
}
请使用此方法并在onCreate()中调用此方法
package "";
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
public class AccountSetup extends Fragment {
MiddleMan mCallBack;
@Override
public void onAttach(Activity activity){
super.onAttach(activity);
try {
mCallBack = (MiddleMan) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement ReqestConnect");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.account_setup, container, false);
mCallBack.DisplayHome();
setHasOptionsMenu(true);
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Inflate the menu; this adds items to the action bar if it is present.
menu.clear();
inflater.inflate(R.menu.menu_secondary, menu);
super.onCreateOptionsMenu(menu,inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_main_display) {
MainDisplay f = new MainDisplay();
mCallBack.ShiftView(f);
return true;
}
if (id == R.id.home) {
System.out.println("Up button pressed, from setup");
}
return super.onOptionsItemSelected(item);
}
}
package "";
public interface MiddleMan {
void ShiftView(Object obj);
void DisplayHome();
void RemoveHome();
if (id == R.id.homeAsUp) {
System.out.println("Up button pressed, from setup");
}
package "";
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity implements MiddleMan {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (findViewById(R.id.activity_main_framelayout) != null) {
if(savedInstanceState != null) {
return;
}
MainDisplay f = new MainDisplay();
ShiftView(f);
}
}
@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 onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_account_setup) {
AccountSetup f = new AccountSetup();
ShiftView(f);
return true;
}
if (id == android.R.id.home) {
MainDisplay f = new MainDisplay();
ShiftView(f);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void ShiftView(Object obj) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.activity_main_framelayout, (Fragment) obj);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
}
@Override
public void DisplayHome(){
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public void RemoveHome() {
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(false);
}
}
package "";
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
public class AccountSetup extends Fragment {
MiddleMan mCallBack;
@Override
public void onAttach(Activity activity){
super.onAttach(activity);
try {
mCallBack = (MiddleMan) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement ReqestConnect");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.account_setup, container, false);
mCallBack.DisplayHome();
//setHasOptionsMenu(true);
return view;
}
/*@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Inflate the menu; this adds items to the action bar if it is present.
menu.clear();
inflater.inflate(R.menu.menu_secondary, menu);
super.onCreateOptionsMenu(menu,inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_main_display) {
MainDisplay f = new MainDisplay();
mCallBack.ShiftView(f);
return true;
}
return super.onOptionsItemSelected(item);
}*/
}
if (id == R.id.home) {
System.out.println("Up button pressed");
}
if (id == android.R.id.home) {
System.out.println("Up button pressed");
}
if (id == android.R.id.home) {
System.out.println("Up button pressed");
}
private void actionBarSet() {
actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
int itemId = item.getItemId();
switch (itemId) {
case android.R.id.home:
toggle();
// Toast.makeText(this, "home pressed", Toast.LENGTH_LONG).show();
break;
}
return true;
}