2016-08-29 9 views
0

私は何を望んでいましたか? 現在、自分のアプリの背景を設定する際に問題が発生しています。私が望んだのは、アプリユーザーが選択できる壁紙/背景の選択肢を持つページです。画像ビューをクリックして背景を選択したら、アプリ全体がその画像を背景として使用する必要があります。それだけです。アプリで選択している背景画像

私がやったこと。 利用可能な壁紙の選択肢として2つのImageViewを持つアクティビティを作成し、ユーザがそれらをクリックしたときに背景画像を設定するためにイメージビューを割り当てました。問題は今私が設定を保存し、私のプロジェクトの他のすべてのアクティビティに適用する方法を知らないということです。

XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:id="@+id/settingscreen" 
tools:context="com.example.naris.auin.SettingsActivity"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:text="Background Selector" 
    android:id="@+id/textViewBackgroundSelector" 
    android:layout_below="@+id/switchNightMode" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_marginTop="38dp" /> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageViewBackground1" 
    android:layout_marginLeft="23dp" 
    android:layout_marginStart="23dp" 
    android:src="@drawable/rateicon" 
    android:layout_centerVertical="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageViewBackground2" 
    android:layout_centerVertical="true" 
    android:layout_toRightOf="@+id/textViewBackgroundSelector" 
    android:layout_toEndOf="@+id/textViewBackgroundSelector" 
    android:layout_marginLeft="36dp" 
    android:layout_marginStart="36dp" 
    android:src="@drawable/ic_launcher" /> 
</RelativeLayout> 

セッティング活動

public class SettingsActivity extends AppCompatActivity { 



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

    final RelativeLayout Settingscreen = (RelativeLayout) findViewById(R.id.settingscreen); 





    ImageView ImageViewBackground1 = (ImageView) findViewById(R.id.imageViewBackground1); 
    ImageView ImageViewBackground2 = (ImageView) findViewById(R.id.imageViewBackground2); 

    ImageViewBackground1.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      Settingscreen.setBackgroundResource(R.drawable.faqicon); 

     } 
    }); 

    ImageViewBackground2.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      Settingscreen.setBackgroundResource(R.drawable.rateicon); 

     } 
    }); 

} 

public boolean onKeyDown(int keyCode, KeyEvent event) { 

    if(keyCode == android.view.KeyEvent.KEYCODE_BACK) 
    { 
     startActivity(new Intent(SettingsActivity.this, 
       MainActivity.class)); 
     finish(); 
    } 
    return false; 
}; 

} 

事前に感謝します。

答えて

0
public class SettingsActivity extends AppCompatActivity { 

private static final String PREF_NAME = "nextage_quiz"; 
private static final int PRIVATE_MODE = 0; 

SharedPreferences getPrefs; 

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

    getPrefs = this.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 
    final RelativeLayout Settingscreen = (RelativeLayout) findViewById(R.id.settingscreen); 

    ImageView ImageViewBackground1 = (ImageView) findViewById(R.id.imageViewBackground1); 
    ImageView ImageViewBackground2 = (ImageView) findViewById(R.id.imageViewBackground2); 

    ImageViewBackground1.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      Settingscreen.setBackgroundResource(R.drawable.faqicon); 
      getPrefs.edit().putInt("id", R.drawable.faqicon).apply(); 
     } 
    }); 

    ImageViewBackground2.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      Settingscreen.setBackgroundResource(R.drawable.rateicon); 
      getPrefs.edit().putInt("id", R.drawable.faqicon).apply(); 
     } 
    }); 
} 

MainActivity:

public class MainActivity extends AppCompatActivity { 

    private static final String PREF_NAME = "nextage_quiz"; 
    private static final int PRIVATE_MODE = 0; 

    SharedPreferences getPrefs; 

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

     getPrefs = this.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 

     ImageView background= (ImageView) findViewById(R.id.background); 
     if(getPrefs.getInt("id",0) != 0) 
      background.setBackgroundResource(getPrefs.getInt("id",0)); 

    } 

Upadate:あなたが「パブリッククラスMainActivityを意味するか、これらの変数

 private static final String PREF_NAME = "nextage_quiz"; 
     private static final int PRIVATE_MODE = 0; 

     SharedPreferences getPrefs; 
+0

を使用しますextends ApCompatActivity {....} " – narispillai

+0

はい私私の答えも更新されました。 –

+0

"エラー:シンボル変数PREF_NAME&PRIVATE_MODEを見つけることができません"。これら2つの目的は何ですか?コードのこの部分(MainActivity)を他のすべてのアクティビティに追加する必要がありますか? XMLを使ってバックグラウンドを設定する他の方法はありませんか? – narispillai