2014-04-22 2 views
1

이 단편 활동은 내 주요 활동이며 2 단편 활동을 포함합니다.단편 활동과 함께 작동하는 공유 환경 설정

/** SharedPreferences */ 
public static final String MyPREFERENCES = "MyPrefs"; 
SharedPreferences sharedpreferences; 
int currentOrientation; 

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

    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    setContentView(R.layout.activity_main); 

    /** Rotation SharedPreferences */ 
    SharedPreferences preferences = PreferenceManager 
      .getDefaultSharedPreferences(this); 
    int orienation = preferences.getInt("orientation", -1); 
    if (orienation != -1) { 
     setRequestedOrientation(orienation); 
    } 
    /** End */ 

    mAdapter = new FragmentAdapter(getSupportFragmentManager()); 

    mPager = (ViewPager) findViewById(R.id.pager); 
    mPager.setAdapter(mAdapter); 

    mIndicator = (TitlePageIndicator) findViewById(R.id.indicator); 
    mIndicator.setViewPager(mPager); 

} 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    if (outState == null) { 
     outState = new Bundle(); 
    } 
    outState.putInt("currentOrientation", 
      Integer.valueOf(currentOrientation)); 
} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 

    currentOrientation = savedInstanceState.getInt("currentOrientation"); 

} 

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

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

     /** Rotation */ 
    case R.id.menuRotate: 
     SharedPreferences preferences = PreferenceManager 
     .getDefaultSharedPreferences(this); 
     Editor editor = preferences.edit(); 
     if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
      editor.putInt("orientation", 
        ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     } else { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
      editor.putInt("orientation", 
        ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     } 
     editor.commit(); 

     break; 

    } 
    return false; 
} 

}

나는 메뉴에서 방향 옵션을 설정했다.

사용자는 메뉴의 방향을 가로 또는 세로로 변경할 수 있습니다.

잘 작동하지만 문제는 다른 활동입니다.

어떻게

것은 내가 원하는 것은 내 응용 프로그램의 모든 활동이 메뉴에서 같은 방향 무엇을 사용자의 선택을받을 것입니다 I'v 이미 내 주요 활동에 선언 된 공유 환경 설정에서 읽을 수 있습니다.

이 내 기타 활동 중 하나입니다 : 사전에

public class MainList extends Activity { 

LinearLayout b1; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_list); 
    b1 = (LinearLayout) findViewById(R.id.list_a); 
    b1.setOnClickListener(mb1); 

} 

View.OnClickListener mb1 = new View.OnClickListener() { 
    public void onClick(View v) { 
     startActivity(new Intent(MainList.this, List_1.class)); 
    } 
}; 

감사합니다 :)

답변

2

그래서, 각각 같은 맥락뿐 아니라 "this"를 사용해야합니다.

private Context context; 

public void onCreate(){ 
    super.onCreate(); 
    context = getApplicationContext(); 
} 

public static Context getAppContext() { 
     return context; 
} 

유형이없는 다른 클래스 (이 기능 보유자 만)가이 컨텍스트에 액세스 할 수 있도록 설정할 수 있습니다.

그런 다음, 공유의 환경 설정의 사용에 :

final SharedPreferences prefList = context.getSharedPreferences(
       Constants.PREFERENCE_NAME, Context.MODE_PRIVATE); 

모두가 다음 그들이 모두 같은 Context을 사용하는 것처럼 서로 이야기 할 수있을 것입니다 getApplicationContext()를 사용하는 경우. 항상 SharedPreferences의 정보를 가져올 외부 응용 프로그램이 필요하지 않는 한 Context.MODE_PRIVATE을 사용하는 것이 좋습니다.

+0

대답 주셔서 감사합니다. 무엇입니까? 상수. PREFERENCE_NAME –

+1

그것의 consants 문자열 (최종 정적 공개) 특정 환경 설정 값의 값을 저장하고 싶습니다. – childofthehorn