0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

他クラスに値を渡したい、MainActivity以外からfindViewByIdしたい

Last updated at Posted at 2023-06-07

MainActivity以外からfindViewByIdしたい、他クラスに値を渡したいとき

引数を使ってMainActivityを他クラスに渡せない場合のやり方メモ

メソッドを使う

MainActivity.java
public class MainActivity extends AppCompatActivity {

    //context用意
    public Context conText;

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

        // conTextにMainActivityを入れる
        conText=this;

        //context受け渡し
        //メソッドでセット
        TestService.setConText(conText);

}

SubActivity.java
public class SubActivity {

    //context用意 static忘れない
    public static Context conText2;

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

        //findViewByIdでconText2を使用
        textRead = ((com.example.backgroundservice.MainActivity) conText2).findViewById(R.id.text_read);

    }

    //contextをセットするメソッド static忘れない
    public static void setConText(Context ct){
        conText2=ct;
    }

}

<public>
他クラスからもアクセス可能にする

<static>
staticは呼び出し時にインスタンス化しなくても使えるようにするもの
今回の場合、MainActivityではSubActivityのインスタンスを生成せずにメソッドを呼び出しているからstatic必要

クラス名.メソッド名
クラス名.変数名
で使える

※メソッドにも変数にもstaticを付けとかなければいけない

分かりにくいが、MainActivityで定義したconTextとSubActivityで定義して実際に使用しているconTextは全く別物

他クラスに値を渡す方法として
・引数
・フィールドをpublicやstaticにして参照(クラス名.変数名で使用)
・メソッドで値をセット

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?