こんにちは私は彼/彼女が初めてコーディネーターのレイアウトをインストールし、すべてのことを正しく行ったが、私の電話でアプリがクラッシュすると私に教えてくれたときにユーザーのためのスナックバーを表示するアプリを作るここコーディネーターレイアウトがヌル
(私の悪い英語のため申し訳ありませんが私はちょうど私の文法やタイプミスを修正する時間がない)、ヌルオブジェクトrefrencesにVirutalのmetodを起動しようとしているイムは、私のコードは
public class MainActivity extends AppCompatActivity {
private CoordinatorLayout coordinatorLayout;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.activity_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinatorLayout);
shows();
DisplayMetrics metrics = new DisplayMetrics();
MainActivity.this.getWindowManager().getDefaultDisplay().getMetrics(metrics);
float yInches = metrics.heightPixels/metrics.ydpi;
float xInches = metrics.widthPixels/metrics.xdpi;
double diagonalInches = Math.sqrt(xInches * xInches + yInches * yInches);
if (diagonalInches >= 6.5) {
setContentView(R.layout.activity_main_7inch);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else if (diagonalInches <= 4.0) {
setContentView(R.layout.activity_main_small);
} else {
setContentView(R.layout.activity_main);
}
}
public void shows() {
Boolean isFirstRun = getSharedPreferences("PREFERENCES", MODE_PRIVATE)
.getBoolean("isFirstRun", true);
if(isFirstRun) {
showfirstTimesnackbar();
getSharedPreferences("PREFERENCE", MODE_PRIVATE).edit()
.putBoolean("isFirstRun", false).commit();
}
}
private void showfirstTimesnackbar() {
Snackbar snackbar = Snackbar.make(coordinatorLayout, "Save your game first!", Snackbar.LENGTH_LONG);
snackbar.setAction("MORE INFO", new View.OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(MainActivity.this)
.setTitle("Warning!")
.setMessage("Save your game before using any cheat! \n Typing in any cheat will disable achievements for your game.")
.setPositiveButton("OK", null)
.setIcon(R.drawable.ic_alert_warning);
}
});
snackbar.show();
}
}
私のlogcat
ですjava.lang.RuntimeException: Unable to start activity ComponentInfo{com.SparidApps.gta_v_cheats/com.example.user.gtav_cheats.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.view.ViewGroup.getContext()' on a null object reference
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.view.ViewGroup.getContext()' on a null object reference
at
com.example.user.gtav_cheats.MainActivity.showfirstTimesnackbar(MainActivity.java:75)
at com.example.user.gtav_cheats.MainActivity.onCreate(MainActivity.java:48)
ごfindViewById – Blackbelt
前にsetContentViewを呼び出す必要があり、私は –
@Blackbeltはまだ同じ –