티스토리 뷰

#포스팅하기


일단 포스팅을 하기 위해서는 어떤 방식으로 하는건지 봐야한다.


https://developers.facebook.com/docs/graph-api/reference/v2.6/user/feed

http://restfb.com/documentation/

여기 링크를 참고한다.



1. activity_write_post.xml 을 수정해준다.


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<?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:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.ktds.oph.customlistview.WritePostActivity">

   <EditText

       android:id="@+id/etPost"

       android:inputType="textMultiLine"

       android:hint="포스트 내용을 입력하세요..."

       android:gravity="top"

       android:layout_width="match_parent"

       android:layout_height="match_parent" />

</LinearLayout>

Colored by Color Scripter

cs




  • EditText는 기본적으로 Single Line만 가능하기 때문에, android:inputType="textMultiLine" 이거를 입력해주면 html에서 얘기하는 textarea처럼 사용할 수 있다.





2. WritePostActivity.java

  • etPost 변수를 선언하고, UI 와 연결한다.


private EditText etPost;

.....

etPost = (EditText) findViewById(R.id.etPost);


  • Validation Check를 해준다. 글자를 입력하지 않았을 경우와 입력했을 경우를 구분하여 코드를 적는다.


@Override

public boolean onOptionsItemSelected(MenuItem item) {

  int itemId = item.getItemId();


  if( itemId == R.id.done ){

      //Validation Check

      //아무것도 입력하지 않았다면,

      if( etPost.getText().toString().length() == 0 ) {

          //글자를 입력하라는 메시지를 띄운다.

          Toast.makeText(WritePostActivity.this, "포스트 내용을 입력해주세요.", Toast.LENGTH_SHORT).show();

          return false;

      }

      else {

          //Facebook으로 Post전송...

          Facebook myFacebook = new Facebook(this);

          myFacebook.auth();

          //글자를 적었다면 닫겠다.

          finish();

      }

      return true;


  }

  return super.onOptionsItemSelected(item);

}



3. Facebook.java를 수정해준다.



  • Context가 MainActivity의 인스턴스인지 물어보고(instanceof : 상속관계), 그렇다면 아래 구문을 실행해라.



4. Facebook.java에 글 등록하는 메소드를 추가해준다.


/**

* 페이스북에 글 등록시키기

* @param message

*/

public void publishing(final String message){


  //네트워크 통신을 위해 쓰레드를 돌린다.

  new Thread(new Runnable() {

      @Override

      public void run() {

          FacebookType facebookType = myFacebook.publish(

                  "me/feed", FacebookType.class, Parameter.with("message", message));

      }

  }).start();

}


5. Auth 메소드에 else if를 추가한다.



6. WritePostActivity.java


  • myFacebook 객체를 바깥으로 빼준다.

private Facebook myFacebook;

......

myFacebook = new Facebook(this);


  • writePost 메소드를 작성한다.

public void writePost(){

  myFacebook.publishing(etPost.getText().toString());

  finish();

}



전체 코드는 다음과 같다.

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

package com.ktds.oph.customlistview;

import android.os.Bundle;

import android.support.v7.app.ActionBar;

import android.support.v7.app.ActionBarActivity;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.EditText;

import android.widget.Toast;

import com.ktds.oph.customlistview.facebook.Facebook;

public class WritePostActivity extends ActionBarActivity {

   private EditText etPost;

   private Facebook myFacebook;

   @Override

   protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.activity_write_post);

       myFacebook = new Facebook(this);

       setTitle("새 글 등록");

       //actionBar 객체를 가져올 수 있다.

       ActionBar actionBar = getSupportActionBar();

       //메뉴바에 '<' 버튼이 생긴다.(두개는 항상 같이다닌다)

       actionBar.setDisplayHomeAsUpEnabled(true);

       actionBar.setHomeButtonEnabled(true);

       etPost = (EditText) findViewById(R.id.etPost);

   }

   @Override

   public boolean onCreateOptionsMenu(Menu menu) {

       getMenuInflater().inflate(R.menu.write_menu, menu);

       return true;

   }

   @Override

   public boolean onOptionsItemSelected(MenuItem item) {

       int itemId = item.getItemId();

       if( itemId == R.id.done ){

           //Validation Check

           //아무것도 입력하지 않았다면,

           if( etPost.getText().toString().length() == 0 ) {

               //글자를 입력하라는 메시지를 띄운다.

               Toast.makeText(WritePostActivity.this, "포스트 내용을 입력해주세요.", Toast.LENGTH_SHORT).show();

               return false;

           }

           else {

               //Facebook으로 Post전송...

               myFacebook.auth();

           }

           return true;

       }

       return super.onOptionsItemSelected(item);

   }

   public void writePost(){

       myFacebook.publishing(etPost.getText().toString());

       finish();

   }

}

Colored by Color Scripter

cs




7. MainActivity.java 수정하기






공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함