2015-09-21 154 views
3

我有在操作欄中的後退按鈕的問題進行分段ActionBarActivity後退按鈕片段

我的代碼片段:

public class Server extends Fragment { 
View view; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    view = inflater.inflate(R.layout.activity_server, container, false); 
    Button server = (Button) view.findViewById(R.id.status); 

    /** Button Check Status Server **/ 
    server.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View arg0) { 
      Intent myIntent = new Intent(view.getContext(), ServerStatus.class); 
      startActivityForResult(myIntent, 0); 
      getActivity().finish(); 
     } 
    }); 
    return view; 
} 
} 

我的代碼中的活動:

public class ServerStatus extends ActionBarActivity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_server_status); 
} 
} 

我的代碼片段

@Override 
public void onNavigationDrawerItemSelected(int position) { 
    Fragment objFragment = null; 
    switch (position) { 
     case 0: 
      objFragment = new Account(); 
      break; 
     case 1: 
      objFragment = new AllNews(); 
      break; 
     case 2: 
      objFragment = new Server(); 
      break; 
     case 3: 
      objFragment = new Account(); 
      break; 
     case 4: 
      objFragment = new Account(); 
      break; 
     case 5: 
      objFragment = new Account(); 
      break; 
     case 6: 
      objFragment = new About(); 
      break; 
    } 
    // update the main content by replacing fragments 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager.beginTransaction() 
      .replace(R.id.container,objFragment) 
      .commit(); 
} 

每次我點擊後退按鈕,程序總是關閉。我已經嘗試過使用:

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); 
} 

誰能幫助我解決我的計劃?

+0

如何顯示您的片段?你把它添加到'backstack'? – hoomi

+0

我不知道如何添加它 –

回答

1

編輯:關於交叉活動導航,你不應該以這種方式使用startActivityForResult()。嘗試使用startActivity()代替。如果您爲結果開始活動,則呼叫活動將等待回撥並且不應完成。

在清單文件中,您應該聲明片段的活動爲父活動ServerStatus以啓用後退導航。你不應該需要NavUtils。

如果要啓用一個活動內片段導航,你有你的片段交易添加到堆棧中: getFragmentManager().beginTransaction().addToBackStack(null).replace(...).commit();

然後你必須調用getFragmentManager().popBackStack()onOptionsItemSelected(),使後退導航爲行動酒吧

@override 
public boolean onOptionsItemSelected(MenuItem item) { 
switch (item.getItemId()) { 
// Respond to the action bar's Up/Home button 
case android.R.id.home: 
    getFragmentManager().popBackStack(); 
    return true; 
} 
return super.onOptionsItemSelected(item); 
} 

您可能需要重寫onBackPressed()使後退導航爲後退按鈕

@override 
public void onBackPressed() { 
    if (getFragmentManager().getBackStackEntryCount() >= 1) { 
     getFragmentManager().popBackStack(); // return to previous fragment 
    } 
    else { 
     super.onBackPressed(); // Exit application when no fragment is on the backstack 
    } 
} 
+0

其中我添加代碼getFragmentManager()。beginTransaction()。addToBackStack(null).replace(...)。commit(); ? –

+0

看到我的編輯代碼片段 –

+0

在這裏添加它:'/ /通過替換片段更新主要內容 FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction()。addToBackStack(null) .replace(R.id.container,objFragment) .commit();'我也編輯了我的文章。 – Mike76