메소드를 제가 설정을 안 한 걸까요? 어디에다가 오류가 난 코드를 연결해야하나요..

조회수 442회

public class MainActivity extends AppCompatActivity { Button button1; EditText edittext1;

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

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myRef = database.getReference("message");

// button1 = (Button) findViewById(R.id.button1); // edittext1 = (EditText) findViewById(R.id.edittext1);

    myRef.addValueEventListener(new ValueEventListener() {

        public void click1button (View v){
            FirebaseDatabase database = FirebaseDatabase.getInstance();
            DatabaseReference myRef = database.getReference("message");
            myRef.child("message").push().setValue(edittext1.getText().toString());
        }

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            TextView textview1 = (TextView)findViewById(R.id.textview1);
            // This method is called once with the initial value and again
            // whenever data at this location is updated.
            String value = dataSnapshot.getValue(String.class);
            textview1.setText(value);   //데이터베이스 값
        }

        @Override
        public void onCancelled(DatabaseError error) {
            // Failed to read value
        }
    });

}
public void onClick(View v){
    Intent intent = new Intent(this, SubActivity.class);
    startActivity(intent);
}

}


<RatingBar
    android:id="@+id/ratingBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:isIndicator="false"
    android:max="5"
    android:numStars="5"
    android:rating="3"
    android:stepSize="0.5" />


<EditText
    android:id="@+id/edittext1"
    android:layout_width="391dp"
    android:layout_height="144dp"
    android:ems="10"
    android:inputType="textPersonName"
    android:text="내용" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/button1"
        android:layout_width="204dp"
        android:layout_height="100dp"
        android:onClick="onClick"
        android:text="확인" />

    <Button
        android:id="@+id/button2"
        android:layout_width="204dp"
        android:layout_height="100dp"
        android:text="Button" />

    <TextView
        android:id="@+id/textview1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="임시로 만들어진영역" />

</LinearLayout>


에서 public void click1button (View v) 가 작동을 안 하는데, 어디다가 연결을 해야하는지 모르겠네요...

xml을 보시면 버튼이 총 2개인데, 글에 첨부하지는 않았지만 SubActivity로 button1은 다른 액티비티화면이 뜨도록 설정해놓은 상태입니다.

그래서 그런지 click1button이 데이터베이스로부터 값을 받는 역할을 해야하는데 그 작동을 전혀안하네요... 예제보며 하나하나 따라가고 있는데 힘듭니다 ㅠㅠ

제가 참조하고 있는 것은 http://blog.naver.com/PostView.nhn?blogId=kkrdiamond77&logNo=221305647401&parentCategoryNo=&categoryNo=65&viewDate=&isShowPopularPosts=true&from=search 이 사이트입니다... 감사합니다

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    어떤 코드인지 잘 알아볼 수는 없지만 click1buttononClick과 마찬가지로 버튼의 클릭 리스너인 것 같습니다. ValueEventListener안에 들어갈 것이 아니라 바깥으로 빼주시고,

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference myRef = database.getReference("message");
    
        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                TextView textview1 = (TextView)findViewById(R.id.textview1);
                // This method is called once with the initial value and again
                // whenever data at this location is updated.
                String value = dataSnapshot.getValue(String.class);
                textview1.setText(value);   //데이터베이스 값
            }
    
            @Override
            public void onCancelled(DatabaseError error) {
                // Failed to read value
            }
        });
    
    }
    
    public void onClick(View v){
        Intent intent = new Intent(this, SubActivity.class);
        startActivity(intent);
    }
    
    public void click1button (View v){
        FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference myRef = database.getReference("message");
        myRef.child("message").push().setValue(edittext1.getText().toString());
    }
    

    어떤 버튼이 출처글 속의 저장 버튼과 같은 역할을 하는지는 모르겠지만 button2인가요?? 마찬가지로 클릭 리스너를 등록해주시면 될 것 같습니다.

    <Button
        android:id="@+id/button2"
        android:layout_width="204dp"
        android:layout_height="100dp"
        android:onClick="click1button"
        android:text="Button" />
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)