如何在操作栏上添加后退箭头或后退按钮

5

如何在Android应用程序的操作栏左上方放置返回箭头或返回按钮。以下是代码和截图。

我已经查阅了许多教程,每次都出现某种错误。所以现在我在这里发布了我的代码,希望有人能够帮助我。谢谢:)

@Override
protected void onCreate(Bundle savedInstanceState) {
    setTitle("Search Station");
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search);   
    editIntent = new Intent(this, EditStationActivity.class);
}

public void onResume(){
    super.onResume();
    updateList("");
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.search, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if(id == R.id.add_station){
        Intent intent = new Intent(this, AddStationActivity.class);
        startActivity(intent);
    }
    return super.onOptionsItemSelected(item);
}

public void findStation(View view) {
    EditText keywrd = (EditText) findViewById(R.id.keyword);
    String keyword = keywrd.getText().toString();
    updateList(keyword);
}

public void updateList(String condition) {
    DbHandler dbh = new DbHandler(this);
    SQLiteDatabase db = dbh.getReadableDatabase();
    String[] projection = {
            DbHandler.StationsHandler.COLUMN_NAME_ENTRY_ID,
            DbHandler.StationsHandler.COLUMN_NAME_TITLE
    };

    Cursor c;
    if (!condition.equals("")) {
        String cond = DbHandler.StationsHandler.COLUMN_NAME_TITLE+" LIKE ?";
        String[] params = {
            "%"+condition+"%"
        };

        c = db.query(DbHandler.StationsHandler.Table_Name, projection, cond, params, null, null, null);
    } else
        c = db.query(DbHandler.StationsHandler.Table_Name, projection, null, null, null, null, null);

    if(c.getCount() == 0) {
        items = new String[1];
        items[0] = "No Station found";

        ids = new String[1];
        ids[0] = "0";
    } else {
        items = new String[c.getCount()];
        ids = new String[c.getCount()];

        c.moveToFirst();

        int i = 0;
        do {
            ids[i] = c.getString(0);
            items[i++] = c.getString(1);
        }
        while (c.moveToNext());
    }

    db.close();
    dbh.close();

    ListView stationList = (ListView) findViewById(R.id.station_list);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
    stationList.setAdapter(adapter);

    stationList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if(ids[position].equals("0"))
                return;

            editIntent.putExtra(EDITID, ids[position]);
            startActivity(editIntent);
        }
    });
}


你尝试在onCreate中加入getActionBar().setDisplayHomeAsUpEnabled(true);了吗? - Matter Cat
应用程序一直崩溃。我尝试了getSupportActionBar().setDisplayHomeAsUpEnabled(true);箭头出现了,但是它不起作用。它不能让我回到主页。 - Mehr
是的,我正在使用AppCompat主题。兄弟,有什么解决方案吗?使用getactionbar会导致崩溃,而使用getsupportactionbar则无法正常工作。 - Mehr
@chaduyphanvu,我不明白你的意思。我可以给你searchactivity.xml的代码。 - Mehr
你应该明确指出你正在扩展Activity,以便其他读者能够理解。 - Manny265
显示剩余2条评论
2个回答

3

将您的活动扩展为ActionBarActivity,并在onCreate()方法中使用以下代码:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

将此代码添加到您的活动中。

@Override
 public boolean onOptionsItemSelected(MenuItem item) {
 switch (item.getItemId()) { 
case android.R.id.home: 
onBackPressed();
 return true;
 default:
 return super.onOptionsItemSelected(item); 
} 
}

1
我在我的主活动中添加了getsupportactionbar,然后你跟随了@user3903214的答案,它起作用了。非常感谢你,兄弟 :) - Mehr
我相信ActionBarActivity在提交此评论时已被弃用 - 当我尝试时,它会被划掉。 - mewc

2

只需在 AndroidManifest.xml 文件中指定活动的父级即可。

 <activity
        android:name=".EditStationActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:launchMode="singleTop"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
</activity>

我尝试了,但它不起作用。<activity android:name=".EditStationActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:label="@string/title_activity_edit_station" android:launchMode="singleTop" android:parentActivityName=".SearchActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="SearchActivity" /> </activity> - Mehr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接