向上导航以在活动之间进行交换不起作用

Quacksilber

我的应用程序基本上包含两个活动,即main-activitysettings-activity

设置活动由启动

Intent launchNewIntent = new Intent(MainActivity.this,SettingsActivity.class);
            startActivityForResult(launchNewIntent, 0);

,其中包含一些片段。我使用了向上导航,该导航在片段之间的设置活动中非常有效,但是按返回按钮时,我不返回主活动setDisplayHomeAsUpEnabled命令位于我的settings-activity中,因为将其放在main-activity中并没有帮助解决我的问题。

在清单中,我已将main-activity声明为settings-activity活动。

那我该怎么办?-非常感谢!

我的主要活动

package user.example;

import android.app.FragmentManager;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);


        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();


        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    }

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();

        if (id == R.id.action_settings) {
            Intent launchNewIntent = new Intent(MainActivity.this,SettingsActivity.class);
            startActivityForResult(launchNewIntent, 0);

            return true;
        }

        return super.onOptionsItemSelected(item);
    }


}

我的SettingsActivity :(我省去了片段,但是重现了相同的错误)

package user.example;

import android.support.v7.app.ActionBar;

public class SettingsActivity extends AppCompatPreferenceActivity {

    private void setupActionBar() {
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
           actionBar.setDisplayHomeAsUpEnabled(true);
        }
    }
 @TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class GeneralPreferenceFragment extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.pref_general);
        setHasOptionsMenu(true);

        bindPreferenceSummaryToValue(findPreference("example_text"));
        bindPreferenceSummaryToValue(findPreference("example_list"));
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == android.R.id.home) {
            startActivity(new Intent(getActivity(), SettingsActivity.class));
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

}

AppCompatPreferenceActivity :(由Settings.activity开头)

package user.example;

import android.content.res.Configuration;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.support.annotation.LayoutRes;
import android.support.annotation.Nullable;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatDelegate;
import android.support.v7.widget.Toolbar;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;


public abstract class AppCompatPreferenceActivity extends PreferenceActivity {

    private AppCompatDelegate mDelegate;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        getDelegate().installViewFactory();
        getDelegate().onCreate(savedInstanceState);
        super.onCreate(savedInstanceState);
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        getDelegate().onPostCreate(savedInstanceState);
    }

    public ActionBar getSupportActionBar() {
        return getDelegate().getSupportActionBar();
    }

    public void setSupportActionBar(@Nullable Toolbar toolbar) {
        getDelegate().setSupportActionBar(toolbar);
    }

    @Override
    public MenuInflater getMenuInflater() {
        return getDelegate().getMenuInflater();
    }

    @Override
    public void setContentView(@LayoutRes int layoutResID) {
        getDelegate().setContentView(layoutResID);
    }

    @Override
    public void setContentView(View view) {
        getDelegate().setContentView(view);
    }

    @Override
    public void setContentView(View view, ViewGroup.LayoutParams params) {
        getDelegate().setContentView(view, params);
    }

    @Override
    public void addContentView(View view, ViewGroup.LayoutParams params) {
        getDelegate().addContentView(view, params);
    }

    @Override
    protected void onPostResume() {
        super.onPostResume();
        getDelegate().onPostResume();
    }

    @Override
    protected void onTitleChanged(CharSequence title, int color) {
        super.onTitleChanged(title, color);
        getDelegate().setTitle(title);
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        getDelegate().onConfigurationChanged(newConfig);
    }

    @Override
    protected void onStop() {
        super.onStop();
        getDelegate().onStop();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        getDelegate().onDestroy();
    }

    public void invalidateOptionsMenu() {
        getDelegate().invalidateOptionsMenu();
    }

    private AppCompatDelegate getDelegate() {
        if (mDelegate == null) {
            mDelegate = AppCompatDelegate.create(this, null);
        }
        return mDelegate;
    }
}
Quacksilber

我发现我必须把这段代码

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

        case android.R.id.home:
            super.onBackPressed();
            return true;
    }
    return super.onOptionsItemSelected(item);
}

进入我的AppCompatPreferenceActivity.java,现在一切正常,感谢到目前为止的所有帮助!!!:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

向上导航按钮在首选项活动中不起作用

来自分类常见问题

Bootstrap导航栏活动状态不起作用

来自分类Dev

导航栏活动链接背景不起作用

来自分类Dev

导航栏引导程序中的活动状态不起作用

来自分类Dev

Bootstrap 4 导航栏活动类不起作用

来自分类Dev

向上按钮不起作用

来自分类Dev

Azure交换不起作用

来自分类Dev

Azure交换不起作用

来自分类Dev

视图控制器之间的导航不起作用

来自分类Dev

在活动之间传递和显示json数据不起作用?

来自分类Dev

在不同活动之间发送数据不起作用

来自分类Dev

在Bundle不起作用的活动之间发送2维数组

来自分类Dev

Android在活动之间保持标记不起作用

来自分类Dev

在活动之间传递字符串,意图不起作用

来自分类Dev

jQuery将活动类添加到导航,现在导航不起作用

来自分类Dev

导航栏不起作用

来自分类Dev

导航与推不起作用

来自分类Dev

导航悬停不起作用

来自分类Dev

导航链接不起作用

来自分类Dev

导航栏不起作用

来自分类Dev

导航链接不起作用

来自分类Dev

导航('DrawerOpen')不起作用

来自分类Dev

Eclipse活动不起作用

来自分类Dev

活动页面不起作用

来自分类Dev

活动关系不起作用

来自分类Dev

活动按钮不起作用

来自分类Dev

反应导航嵌套导航不起作用

来自分类Dev

导航栏折叠导航不起作用

来自分类Dev

导航药丸导航堆叠不起作用