2017-05-03 12 views
1

私は、特定のシステムファイルからCPU周波数(利用可能な周波数、最大および最小周波数)値を読み取り、2スピナーに追加し、選択したものを書き込みますそれらのスピナー)を他のシステムファイルにコピーします。問題は、常に最大周波数(最初のスピナー)の値を最小周波数(2番目のスピナー)ファイル(または同様のもの、正確な問題を考えることができない)に書き込みます。ここでは、コードがあります:このようなコードをコンパイルするAndroid Javaランタイムエラー

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener { 
    cmd CMD = new cmd(); //I use a class file to store functions and strings, whose values originate from the mentioned functions. 
    Spinner spinner = (Spinner) findViewById(R.id.spinner); //maximum frequency. 
    Spinner spinner2 = (Spinner) findViewById(R.id.spinner2); //minimum frequency. 
    List<String> categories = new ArrayList<String>(); 
    ArrayAdapter<String> dataAdapterMAX = new ArrayAdapter<String>(this, simple_spinner_item, categories); 
    ArrayAdapter<String> dataAdapterMIN = new ArrayAdapter<String>(this, simple_spinner_item, categories); 

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

     spinner.setOnItemSelectedListener(this); 
     spinner2.setOnItemSelectedListener(this); 

     for (int i = 0; i < CMD.getFreqs.length; i++) //getting frequencies and writing them to a list. 
     { 
      categories.add (CMD.getFreqs[i]); 
     } 

     dataAdapterMAX.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     dataAdapterMIN.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     spinner.setAdapter(dataAdapterMAX); 
     spinner2.setAdapter(dataAdapterMIN); 
     int maxFreqPos = dataAdapterMAX.getPosition(CMD.MaxFreq); //selecting default (system provided) frequencies. 
     int minFreqPos = dataAdapterMIN.getPosition(CMD.MinFreq); 
     spinner.setSelection(maxFreqPos); 
     spinner2.setSelection(minFreqPos); 
    } 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     String item = parent.getItemAtPosition(position).toString(); 
     Context context = getApplicationContext(); 
     int duration = Toast.LENGTH_SHORT; 
     Toast toast = Toast.makeText(context, item, duration); 
     toast.show(); 
     switch(parent.getId()) { 
      case R.id.spinner: 
       CMD.sudo("echo " + item + " > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq"); //executing a bash command to select the frequency. 
       break; 
      case R.id.spinner2: 
       CMD.sudo("echo " + item + " > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq"); 
       break; 
     } 

    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 
} 

は、私はそれを開こうとするたびしかし、アプリがすぐにクラッシュし、エラーを生成しません。 05-03 18:15:29.115 21558から21558/XXX E/AndroidRuntime:致命的な例外:メイン

Process: xxx, PID: 21558 
                        java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{xxx/xxx.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference 
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2553) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2771) 
                         at android.app.ActivityThread.access$900(ActivityThread.java:177) 
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1432) 
                         at android.os.Handler.dispatchMessage(Handler.java:102) 
                         at android.os.Looper.loop(Looper.java:135) 
                         at android.app.ActivityThread.main(ActivityThread.java:5912) 
                         at java.lang.reflect.Method.invoke(Native Method) 
                         at java.lang.reflect.Method.invoke(Method.java:372) 
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) 
                        Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference 
                         at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:120) 
                         at android.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:155) 
                         at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:31) 
                         at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:55) 
                         at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:205) 
                         at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:185) 
                         at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:519) 
                         at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:190) 
                         at xxx.MainActivity.<init>(MainActivity.java:20) 
                         at java.lang.reflect.Constructor.newInstance(Native Method) 
                         at java.lang.Class.newInstance(Class.java:1690) 
                         at android.app.Instrumentation.newActivity(Instrumentation.java:1078) 
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2543) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2771)  
                         at android.app.ActivityThread.access$900(ActivityThread.java:177)  
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1432)  
                         at android.os.Handler.dispatchMessage(Handler.java:102)  
                         at android.os.Looper.loop(Looper.java:135)  
                         at android.app.ActivityThread.main(ActivityThread.java:5912)  
                         at java.lang.reflect.Method.invoke(Native Method)  
                         at java.lang.reflect.Method.invoke(Method.java:372)  
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)  
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)  
05-03 18:16:19.915 21558-21558/xxx I/Process: Sending signal. PID: 21558 SIG: 9 

すべてのヘルプは高く評価され、ここで、デバッグログ(エラーのみ)があります。

+0

AppCompatDelegateImplBaseクラスを初期化するとき、現在の例外が原因 'findViewById(にあるnullpointerexeptionを持っている)は、'あなたのクラスの一番上に持って呼び出します。しかし、それらの 'ArrayAdapter'もインスタンス化することはできません。 'setContentView()'の後に、これらの初期化をすべてonCreate()に移動します。 –

答えて

1

あなたは

関連する問題