2014-07-09 101 views
4

操作栏上定位按钮Action Bar Back Button在仿真器工作正常,但在设备不工作任何一个可以帮助我Android操作栏,导航向上按钮不工作的设备

MainActivity

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.mainpage); 

    tf = Typeface.createFromAsset(getAssets(), "font/AGENCYB.TTF"); 

    Button btnWeatherDetails = (Button) findViewById(R.id.btnWeather); 
    Button btnMovieDetails = (Button) findViewById(R.id.btnMovies); 
    Button btnHoroscopeDetails = (Button) findViewById(R.id.btnHoroscope); 

    btnWeatherDetails.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) {    
      Intent i = new Intent(MainActivity.this, WeatherActivity.class); 
      MainActivity.this.startActivity(i); 
     } 
    }); 


    btnMovieDetails.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Intent i = new Intent(MainActivity.this, MovieActivity.class); 
      MainActivity.this.startActivity(i);    
     } 
    }); 

    btnHoroscopeDetails.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Intent i = new Intent(MainActivity.this, HoroscopeActivity.class); 
      MainActivity.this.startActivity(i);  
     } 
    }); 

} 

@Override 
protected void onDestroy() { 

    SharedPreferences settingsPreferences = getSharedPreferences(PREF_NAME, MODE_PRIVATE); 
    SharedPreferences.Editor settingsEditor= settingsPreferences.edit(); 
    settingsEditor.putBoolean(MovieActivity.MOVIEUPDATED, false); 
    settingsEditor.putBoolean(HoroscopeActivity.HOROSCOPEAVAILABLE, false); 
    settingsEditor.commit(); 

    super.onDestroy(); 
} 

WeatherActivity

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.scrollmain); 
    getActionBar().setDisplayHomeAsUpEnabled(true); 

    settingsPreferences = getSharedPreferences(MainActivity.PREF_NAME, MODE_PRIVATE); 
    SavedString = settingsPreferences.getString(JSONWEATHERSTRING, "Not Found"); 

    new JSONParse().execute(WeatherUrl); 

} 

public boolean onCreateOptionMenu(Menu menu) 
{ 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 


public boolean onOptionItemSelected(MenuItem item) 
{ 
    switch(item.getItemId()){ 
    case android.R.id.home: 
     NavUtils.navigateUpFromSameTask(this); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

public void onBackPressed() 
{ 
    moveTaskToBack(true); 
    WeatherActivity.this.finish(); 
} 

MovieActivity

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    settingsPreferences = getSharedPreferences(MainActivity.PREF_NAME, MODE_PRIVATE); 

    MovieJsonString = settingsPreferences.getString(JSONMOVIESTRING, "Not Found"); 
    isMovieUpdated = settingsPreferences.getBoolean(MOVIEUPDATED, false); 

    setContentView(R.layout.main_list_view);   
    getActionBar().setDisplayHomeAsUpEnabled(true); 

    movieList = new ArrayList<HashMap<String, String>>(); 

    list = getListView(); 
    // Calling async task to get json 
    if(!isMovieUpdated) 
     new GetMovieDetails().execute(); 
    else 
     GetMoviePreferences(); 

} 

public boolean onCreateOptionMenu(Menu menu) 
{ 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 


public boolean onOptionItemSelected(MenuItem item) 
{ 
    switch(item.getItemId()){ 
    case android.R.id.home: 
     NavUtils.navigateUpFromSameTask(this); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

public void onBackPressed() 
{ 
    moveTaskToBack(true); 
    MovieActivity.this.finish(); 
} 

HoroscopeActivity

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.horoscope); 
    getActionBar().setDisplayHomeAsUpEnabled(true); 

    settingsPreferences = getSharedPreferences(MainActivity.PREF_NAME, MODE_PRIVATE); 

    isHoroAvailable = settingsPreferences.getBoolean(HOROSCOPEAVAILABLE,false); 

    if(!isHoroAvailable) 
     new XMLParse().execute(); 
    else 
     GetHoroscopeFromPreference(); 
} 

public boolean onCreateOptionMenu(Menu menu) 
{ 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 


public boolean onOptionItemSelected(MenuItem item) 
{ 
    switch(item.getItemId()){ 
    case android.R.id.home: 
     NavUtils.navigateUpFromSameTask(this); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

public void onBackPressed() 
{ 
    moveTaskToBack(true); 
    HoroscopeActivity.this.finish(); 
} 

清单文件

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="in.datumdata.weather" 
    android:installLocation="auto" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="18" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_hosurdata" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="in.datumdata.hosurdata.MainActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="in.datumdata.hosurdata.MovieActivity" 
      android:label="Movie Details" 
      android:parentActivityName="in.datumdata.hosurdata.MainActvity" 
      android:screenOrientation="portrait" /> 
     <activity 
      android:name="in.datumdata.hosurdata.WeatherActivity" 
      android:label="Weather Details" 
      android:parentActivityName="in.datumdata.hosurdata.MainActvity" 
      android:screenOrientation="portrait" /> 
     <activity 
      android:name="in.datumdata.hosurdata.SingleContactActivity" 
      android:label="Movie Details" 
      android:parentActivityName="in.datumdata.hosurdata.MovieActivity" 
      android:screenOrientation="portrait" /> 
     <activity 
      android:name="in.datumdata.hosurdata.HoroscopeActivity" 
      android:label="Horoscope Details" 
      android:parentActivityName="in.datumdata.hosurdata.MainActvity" 
      android:screenOrientation="portrait" /> 
     <activity 
      android:name="in.datumdata.hosurdata.SingleHoroscopeActivity" 
      android:label="Horoscope Details" 
      android:parentActivityName="in.datumdata.hosurdata.HoroscopeActivity" 
      android:screenOrientation="portrait" /> 
    </application> 

</manifest> 

在所有上述活动的导航按钮Action Bar Back Button工作正常,在模拟器,但在设备上它不工作,当我按下设备上的后退按钮enter image description here应用程序不可见我的意思是说它在后台运行。这件事情发生在任何活动上,我按回来按钮发生的所有活动

帮助我。预先感谢并为我的英语不好而感到遗憾。

回答

3

如果你这样做:

getActionBar().setDisplayHomeAsUpEnabled(true); 

试着这样做:

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
7

您应该使用向上按钮元数据标签的工作对旧的API:

 android:parentActivityName=".MainActivity"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="MainActivity" /> 

编辑:

你已经有parentActivityName,所以才有了元标记添加到您的AndroidManifest.xml文件的标签。像这样:

<activity 
     android:name="in.datumdata.hosurdata.MovieActivity" 
     android:label="Movie Details" 
     android:parentActivityName="in.datumdata.hosurdata.MainActvity" 
     android:screenOrientation="portrait"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="in.datumdata.hosurdata.MainActvity" /> 
    </activity> 
+0

我应该在每项活动中添加此项y – Prashanth

+0

致所有应该有**向上按钮**的活动。还要更改活动名称,以便它们与应该调用的名称相匹配。 – Simas

+0

对不起din改变活动名称? – Prashanth

1

我有支持动作条的问题,如果你使用的支持动作条,那么你已经在你的代码中添加这一行。

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

而且在您需要添加

<meta-data 
    android:name="android.support.PARENT_ACTIVITY" 
    android:value="com.example.ParentActivity" /> 

所以在清单中的活动宣言将类似于清单:

<activity 
    android:name="com.example.MyActivity" 
    android:label="My Activity"> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value="com.example.ParentActivity" /> 
</activity> 

在你不能在活动声明添加android:parentActivityName="com.example.ParentActivity"如果您使用的API级别低于16,则会显示。

相关问题