2016-09-09 7 views
-1

こんにちは私は彼/彼女が初めてコーディネーターのレイアウトをインストールし、すべてのことを正しく行ったが、私の電話でアプリがクラッシュすると私に教えてくれたときにユーザーのためのスナックバーを表示するアプリを作るここコーディネーターレイアウトがヌル

(私の悪い英語のため申し訳ありませんが私はちょうど私の文法やタイプミスを修正する時間がない)、ヌルオブジェクト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) 
+1

ごfindViewById – Blackbelt

+0

前にsetContentViewを呼び出す必要があり、私は –

+0

@Blackbeltはまだ同じ –

答えて

1

viewにアクセスしており、layoutActivityに設定してください。

次てみ

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); 
} 

coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinatorLayout); 
shows(); 
+0

私は、これはライン48あなたのMainActivity内を何同じ –

+0

@TarekZoubiを静止画なかったことをしようとしますか? – Nikhil

+0

@ indramurari何も空白行そこにコード行があったが移動したが、logcatはまだ空の行を指している –

関連する問題