하고재비

[Android] 클래스 이름 불러와 인텐트로 바로써먹어보자 본문

Android

[Android] 클래스 이름 불러와 인텐트로 바로써먹어보자

DeadDE 2018. 1. 22. 11:13

만들어두면 편할것같아서 구현함.


class의 이름을 String 으로 받고, intent시 바로 사용할수 있음.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package com.example.user.android_activity_check;
 
import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn = (Button)findViewById(R.id.btn_1);
        btn.setText("Main Activity");
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Class myClass_1 = null;
                try {
                    String myClass = new Activity_search(MainActivity.this).getRunActivity();
                    myClass_1 = Class.forName(myClass);
                    Activity obj = (Activity) myClass_1.newInstance();
                    Intent intent = new Intent(getApplicationContext(), Main2Activity.class);
                    startActivity(intent);
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (InstantiationException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}
 
 
 
package com.example.user.android_activity_check;
 
import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
 
 
 
public class Main2Activity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        Button btn = (Button) findViewById(R.id.btn_2);
        btn.setText("2Activity");
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Class myClass_1 = null;
                try {
                    String myClass = new Activity_search(Main2Activity.this).getRunActivity();
                    myClass_1 = Class.forName(myClass);
                    Activity obj = (Activity) myClass_1.newInstance();
                    Intent intent = new Intent(getApplicationContext(), Main3Activity.class);
                    startActivity(intent);
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (InstantiationException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}
 
 
package com.example.user.android_activity_check;
 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
 
public class Main3Activity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
    }
}
 
 
package com.example.user.android_activity_check;
 
import android.app.Activity;
import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
 
import java.util.List;
 
 
/**
 * Created by USER on 2018-01-19.
 */
 
public class Activity_search {
    Activity act;
    public Activity_search(Activity activity){
        this.act = activity;
    }
    public String getRunActivity()    {
        ActivityManager activity_manager = (ActivityManager) act.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningTaskInfo> task_info = activity_manager.getRunningTasks(9999);
        ComponentName topActivity = task_info.get(0).topActivity;
        String className = topActivity.getClassName();
        return className;
    }
}
 
 
 
cs


'Android' 카테고리의 다른 글

[Android] Json 파싱하기  (0) 2018.02.14
[Android]탭레이아웃 Tab Layout  (0) 2018.02.11
[Android] 현재 실행중인 액티비티 가져오기  (0) 2018.01.19
[Android] Recycler View, StaggeredGrid  (0) 2018.01.17
[Android] ListFragment  (0) 2018.01.10
Comments