마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

버튼 클릭시 레이아웃으로 이동을 해야 하는데...

0 추천

안드로이드 독학하는 학생입니다...

앱을 만드려고 DO IT 책을 참고해서 제작해 나가는 중이었습니다만, 치명적 오류가....

버튼이 클릭하면 원래 다른 레이아웃으로 이동하게 만들었습니다.

그런데 이동하기 전에 앱이 다운되더군요...

 

일단 아래가 MainActivity상의 버튼 설정입니다.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:text="Panmaid app"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:ignore="HardcodedText" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="377dp"
        android:layout_height="115dp"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="60dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/lovelive_logo"
        tools:ignore="ContentDescription" />

    <Button
        android:id="@+id/GroupActivity"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="32dp"
        android:layout_marginLeft="32dp"
        android:layout_marginBottom="32dp"
        android:text="그룹&amp;유닛"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        tools:ignore="HardcodedText" />
//죽어버리는 버튼 녀석이 요녀석입니다ㅜㅜ

    <Button
        android:id="@+id/MemberActivity"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="32dp"
        android:text="멤버&amp;성우"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/button3"
        app:layout_constraintStart_toEndOf="@+id/GroupActivity"
        tools:ignore="HardcodedText" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="32dp"
        android:layout_marginRight="32dp"
        android:layout_marginBottom="32dp"
        android:text="앨범"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        tools:ignore="HardcodedText" />

 

그리고 아래녀석은 MainActivity.java이고요.

package com.example.lovelive_information;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

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

        Button button1 = (Button) findViewById(R.id.GroupActivity);
        button1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Intent intent1=new Intent(getApplicationContext(),GroupActivity.class);
                startActivity(intent1);
            }
        });

        Button button2 = (Button) findViewById(R.id.MemberActivity);
        button2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Intent intent2=new Intent(getApplicationContext(),MemberActivity.class);
                startActivity(intent2);
            }
        });
    }
}

 

그리고 아래가 로그켓 에러에서 이야기한 cause java인 GroupActivity입니다.

package com.example.lovelive_information;

import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ListView;

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;

public class GroupActivity extends AppCompatActivity {
    EditText editText;

    ListView listView;
    GroupAdapter adapter;

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

        listView = (ListView) findViewById(R.id.listview);

        adapter = new GroupAdapter();

        //어댑터 추가 목록 생략

        listView.setAdapter(adapter);
    }

    class GroupAdapter extends BaseAdapter{
        ArrayList<GroupItem> items = new ArrayList<GroupItem>();

        @Override
        public int getCount(){
            return items.size();
        }

        public void addItem(GroupItem item){
            items.add(item);
        }

        @Override
        public Object getItem(int position){
            return items.get(position);
        }

        @Override
        public long getItemId(int position){
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup viewGroup) {
            GroupItemView view = new GroupItemView(getApplicationContext());
            GroupItem item = items.get(position);
            view.setName(item.getName());
            view.setMember(item.getMember());
            view.setImage(item.getResId());

            return view;
        }
    }
}

 

제가 처음 질문을 올리는지라 가독성이 떨어지는 점 죄송합니다ㅜㅜ

능력자님들 도와주세요ㅜㅜㅜ

스하 (120 포인트) 님이 2019년 11월 4일 질문
로그켓 에러입니다ㅜㅜ

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.lovelive_information, PID: 10584
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.lovelive_information/com.example.lovelive_information.GroupActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
        at com.example.lovelive_information.GroupActivity.onCreate(GroupActivity.java:42)
        at android.app.Activity.performCreate(Activity.java:7136)
        at android.app.Activity.performCreate(Activity.java:7127)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6669) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
I/Process: Sending signal. PID: 10584 SIG: 9
Process 10584 terminated.

1개의 답변

0 추천
로그상은 setAdapter 호출 시 nullpointexception이 발생했습니다.
 listview가 null인 것으로 생각됩니다. activity_member.xml에  listview 라는 id 로 된 listview 가 있는지 확인 해 보시고, id 값이 다르면 맞춰 보세요
익명사용자 님이 2019년 11월 6일 답변
확인했더니 바로 해결이 됐네요ㅜㅜ
답변 감사드립니다!!
...