AWS Mobile Application Development

AWSのサービスをモバイルから使うにあたって調べた情報などまとめて行きます。

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

}