어제 17억짜리 자동차 부품 삽입기 계약 공시때문에 반짝 급등하는 바람에 미래산업이 잠깐 다시 시끄러웠다. 주식해 온 경험이 그리 길지 않지만, 해당 종목 게시판이 내일은 상입네 줄연상간다면서 미리 풍악을 울려버리는 경우에는 거의 대부분 죽쒀왔던터라 불안했는데 혹시나가 역시나였다. 예전 급등과 급락을 반복하던 때보다는 그 갭이 작아서 수치적인 측면에서는 충격이 덜하나, 아무래도 예전의 급등의 맛을 봤던 사람이라면 실망이 크리라 생각된다.

 그런데 전일자 대차거래 체결/상환 상위 순위에 오랫만에 다시 미래산업이 올라와 있었다.

  보시다시피 거의 상환한만큼 다시 체결된 상황이다. 상환 주수가 더 많다면 앞으로 오르리라는 판단에 무게가 실리겠지만, 거의 원점이라는 소리니 내렸으면 하는 쪽과 올랐으면 하는 쪽이 거의 비등하다는 것이겠지 싶다. 그래도 한 가지 다행이다 싶은 것은 아직 전환사채 물량이 풀렸다는 공시같은 게 없다는 점(그런데 이것도 아직 안심하긴 이른 것 같다. 갑자기 내일 장 초반에 공시가 쾅하고 떨어질 수 있으니;;;).

 

 

 이 와중에 어제 잠깐 기웃거렸던 신성에프에이는 오늘 결국 상한가를 기록했다. 전에 키이스트도 그랬고 화승인더도 그랬고 내가 추리고 추려서 2개 중 1개 고르자해서 고르면 결국 선택하지 않은 쪽이 먼저 치고 오른다. 나도 참 인간지표인가 ㅎ;; 다른 투자자들처럼 나만의 투자원칙을 다시 세워야되지 않을까 싶다.

(p.s. 이 와중에 대차잔고 감소한 한화생명이 눈에 들어오네;;)

1. 목표 필요한 File을 생성하고 해당 File의 경로(Path)를 확인한다.

2. 개발 환경
  - Android Studio 1.4.1(64bit)
  - LG G pro (LolliPop)

3. App Coding 과정
 1) AndroidManifest.xml 의 수정
   : 해당 App.이 File을 read/write할 권한을 주기 위해 <uses-permission ...>을 다음과 같이 준다. 이 과정을 수행하지 않을 경우, compile 및 실행은 문제 없이 되나 실제 File을 생성되지 않는다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.zip.filepathexample" >

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application ...

 

 2) .xml file에 파일 생성 여부를 보여 주기 위한 Layout 설정
   : 생성된 File의 경로를 보여주기 위해 TextView를 사용하기로 했다. 이 부분은 추후에 List 등을 이용하여 icon화 시키는 등 응용하는 방법을 배워야 겠다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView
        android:id="@+id/pathview01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:text="Path01"/>
    <TextView
        android:id="@+id/pathview02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:text="Path02"/>
    <TextView
        android:id="@+id/pathview03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:text="Path03"/>

</LinearLayout>

 

 3) .java file을 통한 Activity 설정
   a. external storage에 file directory 생성
    : File 생성자를 통해 다음과 같이 file을 저장할 directory를 생성한다.

File storeDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "MyDocApp");
if (!storeDir.exists()) {
    if (!storeDir.mkdirs()) {
        Log.d("MyDocApp", "failed to create directory");
        return;
    }
}

 

  b. file 생성
   : 실제 생성할 File을 다음과 같이 생성한다. file name은 해당 명령이 수행되는 시간을 따와서 쓸 수 있도록 SimpleDateFormat().format(new Date());를 사용한다.

timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
temp = new File(storeDir.getPath() + File.separator + "test_"+ timeStamp + ".docx");
if(temp == null){
    Log.d(TAG, "Error at creating .docx file, check storage permissions :");
    return;
}

 

  c. file 생성 경로의 확인
    : 생성된 파일의 경로를 String으로 찍어 봄으로서 파일의 생성 여부를 확인한다. 이 때, 'file 생성자 변수명'.getPath(); 혹은 .getAbsolutePath();, .getCanonicalPath(); 등 file 내 경로 확인 함수가 여러 개가 있었는데 string 값에는 차이가 없었으나, 실행 장치나 compile 방식에 따라 차이가 있을 수도 있다(참고 : http://egloos.zum.com/entireboy/v/4196432).

pathView01.setText(temp.getAbsolutePath());
pathView02.setText(temp.getPath());
try {
    pathView03.setText(temp.getCanonicalPath());
} catch (IOException e) {
    Log.d(TAG, "Error at creating .docx file, check storage permissions :");
    return;
}

 

4. App 생성 결과
  아래 사진과 같이 file path를 확인했는데 android 내에서는 getPath()나 getAbsolutePath(), getCanonicalPath();들의 차이가 확인되지 않았다. 다른 사람들을 블로그를 보면 다소 차이가 있었는데, 아무래도 나는 file을 생성할 때 경로를 모두 찍어 입력해서 그렇지 않은가 싶다.

 

MainActivity만 쓰다가 다른 Activity를 추가해 새 화면을 사용하고자 했다.

추가할 Activity의 구조는 처음에 생성되는 MainActivity를 보고 class명을 변경해서 눈치껏 변경했는데 다른 파일들도 수정하거나 추가해야 했다.

기본서와 구글링을 통해 얻은 정보를 추려서 정리하고자 한다.

(p.s. 이해를 돕는 image는 추후에 등록하겠습니다.)


1. 'AndroidManifest.xml'에 추가하고자 하는 sub-Activity를 등록한다.

<manifest ....>

<application android:name=".MyApplication" ...>

<activity android:name=".MainActivity" ...></activity>

<activity android:name=".AddActivity" ...></activity> // 미리 Activity에 해당하는 class을 생성해 놓으면 자동완성이 되어서 편했다.

</application>

</manifest>


2. 생성하고자 하는 추가 Activity class를 생성한다.

2-1) 위 1.과 같은 경우 Java->'생성한 App' folder를 선택한 후

     마우스 오른쪽 버튼을 통해 New -> Java Class에서 AddActivity 라는 이름으로 등록하면 자동으로 activity class가 생성된다.

2-2) 생성된 class 명 옆에 'extends Activity'와 내부에 'onCreate' method를 추가한다.

public class AddActivity extends Activity {


// 필요한 부분 추가


@Override

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_addActivity); // 사실 지금 당장은 이 부분에서 error가 날 것이다. activity_addActivity.xml 파일을 추가해 줘야 한다.


// 필요한 부분 추가

}

}

2-3) 위 class에서 사용할 activity_addActivity.xml 파일을 layout folder(activity_main.xml이 있는 위치와 동일)에 생성해 준다.


3. 본래 사용하던 Activity로 돌아와 Intent를 선언해 준다.

public void MainActivity extends Activity {


// 생략


@Override

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);


// 생략


Intent intent = new Intent(); // intent의 선언
ComponentName name = new ComponentName("package 명 입력", "package명.AddActivity");
intent.setComponent(name); // intent에 component를 등록
startActivity(intent); // 해당 intent 시작. 위에 등록한 AddActivity가 실행됨

}

}


4. 추가한 Activity에서 다시 MainActivity와 같은 본래 Activity로 돌아올 수 있도록 'finish();'를 추가한다.

public class AddActivity extends Activity {


// 필요한 부분 추가


@Override

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_addActivity); // 사실 지금 당장은 이 부분에서 error가 날 것이다. activity_addActivity.xml 파일을 추가해 줘야 한다.


// 필요한 부분 추가


finish(); // 편의에 따라서 보통 Button등을 통해 해당 button을 누를 경우 돌아가도록 등록하기도 한다.

}

}

+ Recent posts