2015-03-30 6 views
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); 
     } 
    }); 
} 

+0

Вы пробовали положить 'getActionBar(). SetDisplayHomeAsUpEnabled (true); 'в вашем onCreate? –

+0

приложение рушилось вместе с ним. Я попробовал getSupportActionBar(). setDisplayHomeAsUpEnabled (true); стрела появилась, но она не была функциональной. это не привело меня домой. – Mehr

+0

Также зависит от родительской темы, которую вы распространяете в этой деятельности. Если вы используете тему appcompat, но вызываете getActionBar(), она не будет функционировать должным образом. –

ответ

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

Я попробовал стрелку, но ее не было – Mehr

+1

Я добавил getupportactionbar в свою основную деятельность, а затем u последовал за @ user3903214, и это сработало. спасибо много bro :) – Mehr

+0

Я верю, что 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> 
+0

я попытался его не работает <деятельность андроид: имя = андроид «EditStationActivity.»: configChanges = "клавиатура | keyboardHidden | ориентация | Размер экрана. " андроид: метка = "@ строка/title_activity_edit_station" андроид: launchMode = "SingleTop" андроид: parentActivityName =" SearchActivity»> <мета-данные андроид: имя = "android.support.PARENT_ACTIVITY" android: value = "SearchActivity" /> – Mehr