NullPointerExcetion при попытке setImageDrawable
вот код который пытаюсь выполнить. На экране отображается набор обоев на задний фон. При выборе должна меняться переменная для использования в другом классе а так же изображение выбранных обоев.
public class ThemeConfig extends AppCompatActivity implements OnClickListener {
static int var_num;
public ImageButton fon1_v;
public ImageButton fon2_v1;
public ImageButton fon2_v2;
public ImageButton fon2_v3;
public ImageButton fon3_v;
public ImageButton fon4_v;
public MainActivity ma;
public SharedPreferences sPref;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sPref = getSharedPreferences("MyPref", MODE_PRIVATE);
ma = new MainActivity();
rest_menu();
setContentView(R.layout.theme_config);
try {
var_num = sPref.getInt("var_n", 2);
} catch (NullPointerException e) {
var_num = ma.bg_num;
}
fon1_v = (ImageButton) findViewById(R.id.imageButton2);
fon2_v1 = (ImageButton) findViewById(R.id.imageButton3);
fon2_v2 = (ImageButton) findViewById(R.id.imageButton4);
fon2_v3 = (ImageButton) findViewById(R.id.imageButton5);
fon3_v = (ImageButton) findViewById(R.id.imageButton6);
fon4_v = (ImageButton) findViewById(R.id.imageButton7);
fon1_v.setOnClickListener(this);
fon2_v1.setOnClickListener(this);
fon2_v2.setOnClickListener(this);
fon2_v3.setOnClickListener(this);
fon3_v.setOnClickListener(this);
fon4_v.setOnClickListener(this);
}
public void onBackPressed() {
SharedPreferences.Editor ed = sPref.edit();
ed.putInt("var_n", var_num );
ed.commit();
super.onBackPressed();
}
@SuppressLint("UseCompatLoadingForDrawables")
public void rest_menu() {
switch (var_num) {
case 1:
fon1_v.setImageDrawable(getDrawable(drawable.fon1_vert_act));
fon2_v1.setImageDrawable(getDrawable(drawable.fon2_vert1));
fon2_v2.setImageDrawable(getDrawable(drawable.fon2_vert2));
fon2_v3.setImageDrawable(getDrawable(drawable.fon2_vert3));
fon3_v.setImageDrawable(getDrawable(drawable.fon3_vert));
fon4_v.setImageDrawable(getDrawable(drawable.fon_vertical));
break;
case 2:
fon1_v.setImageDrawable(getDrawable(R.drawable.fon1_vert));
fon2_v1.setImageDrawable(getDrawable(R.drawable.fon2_vert1_act));
fon2_v2.setImageDrawable(getDrawable(R.drawable.fon2_vert2));
fon2_v3.setImageDrawable(getDrawable(R.drawable.fon2_vert3));
fon3_v.setImageDrawable(getDrawable(R.drawable.fon3_vert));
fon4_v.setImageDrawable(getDrawable(R.drawable.fon_vertical));
break;
case 3:
fon1_v.setImageDrawable(getDrawable(R.drawable.fon1_vert));
fon2_v1.setImageDrawable(getDrawable(R.drawable.fon2_vert1));
fon2_v2.setImageDrawable(getDrawable(R.drawable.fon2_vert2_act));
fon2_v3.setImageDrawable(getDrawable(R.drawable.fon2_vert3));
fon3_v.setImageDrawable(getDrawable(R.drawable.fon3_vert));
fon4_v.setImageDrawable(getDrawable(R.drawable.fon_vertical));
break;
case 4:
fon1_v.setImageDrawable(getDrawable(R.drawable.fon1_vert));
fon2_v1.setImageDrawable(getDrawable(R.drawable.fon2_vert1));
fon2_v2.setImageDrawable(getDrawable(R.drawable.fon2_vert2));
fon2_v3.setImageDrawable(getDrawable(R.drawable.fon2_vert3_act));
fon3_v.setImageDrawable(getDrawable(R.drawable.fon3_vert));
fon4_v.setImageDrawable(getDrawable(R.drawable.fon_vertical));
break;
case 5:
fon1_v.setImageDrawable(getDrawable(R.drawable.fon1_vert));
fon2_v1.setImageDrawable(getDrawable(R.drawable.fon2_vert1));
fon2_v2.setImageDrawable(getDrawable(R.drawable.fon2_vert2));
fon2_v3.setImageDrawable(getDrawable(R.drawable.fon2_vert3));
fon3_v.setImageDrawable(getDrawable(R.drawable.fon3_vert_act));
fon4_v.setImageDrawable(getDrawable(R.drawable.fon_vertical));
break;
case 6:
fon1_v.setImageDrawable(getDrawable(R.drawable.fon1_vert));
fon2_v1.setImageDrawable(getDrawable(R.drawable.fon2_vert1));
fon2_v2.setImageDrawable(getDrawable(R.drawable.fon2_vert2));
fon2_v3.setImageDrawable(getDrawable(R.drawable.fon2_vert3));
fon3_v.setImageDrawable(getDrawable(R.drawable.fon3_vert));
fon4_v.setImageDrawable(getDrawable(R.drawable.fon_vertical_act));
break;
}
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.imageButton2:
var_num = 1;
fon1_v.setImageDrawable(getDrawable(R.drawable.fon1_vert_act));
fon2_v1.setImageDrawable(getDrawable(R.drawable.fon2_vert1));
fon2_v2.setImageDrawable(getDrawable(R.drawable.fon2_vert2));
fon2_v3.setImageDrawable(getDrawable(R.drawable.fon2_vert3));
fon3_v.setImageDrawable(getDrawable(R.drawable.fon3_vert));
fon4_v.setImageDrawable(getDrawable(R.drawable.fon_vertical));
break;
case R.id.imageButton3:
fon1_v.setImageDrawable(getDrawable(R.drawable.fon1_vert));
fon2_v1.setImageDrawable(getDrawable(R.drawable.fon2_vert1_act));
fon2_v2.setImageDrawable(getDrawable(R.drawable.fon2_vert2));
fon2_v3.setImageDrawable(getDrawable(R.drawable.fon2_vert3));
fon3_v.setImageDrawable(getDrawable(R.drawable.fon3_vert));
fon4_v.setImageDrawable(getDrawable(R.drawable.fon_vertical));
var_num = 2;
break;
case R.id.imageButton4:
fon1_v.setImageDrawable(getDrawable(R.drawable.fon1_vert));
fon2_v1.setImageDrawable(getDrawable(R.drawable.fon2_vert1));
fon2_v2.setImageDrawable(getDrawable(R.drawable.fon2_vert2_act));
fon2_v3.setImageDrawable(getDrawable(R.drawable.fon2_vert3));
fon3_v.setImageDrawable(getDrawable(R.drawable.fon3_vert));
fon4_v.setImageDrawable(getDrawable(R.drawable.fon_vertical));
var_num = 3;
break;
case R.id.imageButton5:
fon1_v.setImageDrawable(getDrawable(R.drawable.fon1_vert));
fon2_v1.setImageDrawable(getDrawable(R.drawable.fon2_vert1));
fon2_v2.setImageDrawable(getDrawable(R.drawable.fon2_vert2));
fon2_v3.setImageDrawable(getDrawable(R.drawable.fon2_vert3_act));
fon3_v.setImageDrawable(getDrawable(R.drawable.fon3_vert));
fon4_v.setImageDrawable(getDrawable(R.drawable.fon_vertical));
var_num = 4;
break;
case R.id.imageButton6:
fon1_v.setImageDrawable(getDrawable(R.drawable.fon1_vert));
fon2_v1.setImageDrawable(getDrawable(R.drawable.fon2_vert1));
fon2_v2.setImageDrawable(getDrawable(R.drawable.fon2_vert2));
fon2_v3.setImageDrawable(getDrawable(R.drawable.fon2_vert3));
fon3_v.setImageDrawable(getDrawable(R.drawable.fon3_vert_act));
fon4_v.setImageDrawable(getDrawable(R.drawable.fon_vertical));
var_num = 5;
break;
case R.id.imageButton7:
fon1_v.setImageDrawable(getDrawable(R.drawable.fon1_vert));
fon2_v1.setImageDrawable(getDrawable(R.drawable.fon2_vert1));
fon2_v2.setImageDrawable(getDrawable(R.drawable.fon2_vert2));
fon2_v3.setImageDrawable(getDrawable(R.drawable.fon2_vert3));
fon3_v.setImageDrawable(getDrawable(R.drawable.fon3_vert));
fon4_v.setImageDrawable(getDrawable(R.drawable.fon_vertical_act));
var_num = 6;
break;
}
}
вот логи ошибки которую получаю.
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageButton.setImageDrawable(android.graphics.drawable.Drawable)' on a null object reference
at com.realese.cryptographLite.ThemeConfig.rest_menu(ThemeConfig.java:109)
at com.realese.cryptographLite.ThemeConfig.onCreate(ThemeConfig.java:44)
at android.app.Activity.performCreate(Activity.java:7994)
at android.app.Activity.performCreate(Activity.java:7978)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Раньше всё работало нормально, добавил использование SharedPreferences и начались танцы с бубном. Код прошу не разносить, Java всего полтора месяца учу и вот набиваю лоб о такое постоянно.