【Android基礎】 外部のクラスファイルが利用できない時の対処法
MainActivity.javaと同じディレクトリのHello.javaというクラスファイルを定義してそれをMainActivity.javaから読もうとすると、「Unknown Class」、「Invalid Method declaration」、「return type required」と表示されたりする。
あくまで一例ですが、原因のその一つにメソッドやコンストラクタ以外のところで、プログラムを書いている可能性があります。
例えば、以下のような独自のクラスがあるとして、
Hello.java
package com.example.azwoo.test; public class Hello { public String love; public String death; public void setLove(String love){ this.love = love; } public void setDeath(String death){ this.death = death; } }
ちゃんとonCreateメソッド(例)内でインスタンスを作成していればエラーは起きませんが、
MainActivity.java
package com.example.azwoo.test; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; public class MainActivity extends AppCompatActivity { private Hello hello; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); hello = new Hello(); hello.setLove("I love you"); hello.setDeath("I love you"); Log.e("test","love = " + hello.love); Log.e("test","death = " + hello.death); } }
こんな感じでメソッドでもなくコンストラクタでもないところで書いているとエラーになります。
MainActivity.java
package com.example.azwoo.test; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; public class MainActivity extends AppCompatActivity { private Hello hello; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } hello = new Hello(); hello.setLove("I love you"); hello.setDeath("I love you"); Log.e("test","love = " + hello.love); Log.e("test","death = " + hello.death); }