大家好,我已经在我的应用程序的操作栏中实现了后退按钮,但我不知道如何从 Activity 返回到 fragment 或从 fragment 返回到 fragment 。因此,如果有人可以向我展示如何从一个 Activity 返回到一个 fragment ,甚至从一个 fragment 返回到另一个 fragment ,那就太棒了。这是我现在拥有的代码
public class Article extends Activity{
private WebView webview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.articleview);
// etc...
getActionBar().setDisplayHomeAsUpEnabled(true);
Bundle b = getIntent().getExtras();
String KEY_LINK = b.getString("b");
String url = getIntent().getStringExtra("key");
WebView myWebView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl(url);
myWebView.loadUrl(KEY_LINK);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
在我的 list 中我有
<activity
android:name=".Article"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="com.NTCI.graffiti.Article" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.NTCI.graffiti.MainActivity" />
</activity>
但我希望它返回到其主机 fragment 而不是我设置的主要 Activity 。有什么想法吗?
最佳答案
我最近不得不这样做,并决定 switch 语句是最好的方法。本质上,您可以跟踪您现在所在的 fragment ,然后根据您设置的任何标准切换到另一个 fragment 。对我来说,它是从一个 fragment 导航回另一个 fragment 。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
...
case android.R.id.home:
switch(currentFragment){
case FRAGMENT1:
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction
.replace(R.id.fragment_container, fragment2);
transaction.commit();
currentFragment = FRAGMENT_2;
return true;
default:
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction
.replace(R.id.fragment_container, fragment1);
transaction.commit();
currentFragment = FRAGMENT_1;
return true;
}
}
我假设您的意思是您想要结束当前所在的 Activity 并显示一个 fragment ?在这种情况下,可能会有一个父 FragmentActivity (用于托管 fragment ),因此您只需结束当前 Activity 并以典型方式启动另一个 Activity 即可。再次:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
...
case android.R.id.home:
Intent intent = new Intent(this, NewFragmentActivity.class);
intent.putExtra(...); // so you can pass what activity you're coming from, if needed
startActivity(intent);
this.finish();
请记住,这只是一个按钮,您实际上是通过 case android.R.id.home:
分配 onClick() 操作。
关于java - 如何让android操作栏后退按钮返回到fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23330313/