Android

[Android Studio] 인물 정보 입력 & 등록하기 (4)

https.. 2024. 5. 12. 15:21

메인엑티 복사해서 PersonInfo 만든다.
안드로이드메니페스트에 PersonInfo를 등록한다.

menu_main를 menu_personinf로 수정

 
액티비티 전환.. 홈으로도 가고 인물 등록으로도 간다.

if (id == R.id.action_settings2) {
    // 인물 등록 액비티비 전환
    Intent it = new Intent(this, PersonReg.class);
    startActivity(it);
    return true;
} else if (id == R.id.action_settings1) {
    // 인물 등록 액비티비 전환
    Intent it = new Intent(this, MainActivity.class);
    startActivity(it);
    return true;
}

 
onCreate수정
activity_personreg.xml 복사해서 activity_personinf.xml 만들고 코드에서 reg부분을 inf로 바꾼다.
content_personreg도 복사해서 content_personinf로 변경한다.
 
 
content_personinf에서 다음과 같이 수정한다.
editText는 모두 textview로 변경, 라디오그룹은 텍스트뷰로 변경하고 라디오버튼은 삭제,  android:orientation="horizontal"> 이것도 삭제
 
전공도 스피너뷰를 텍스트로 변경, 첫번째 체크박스도 텍스트뷰로 하고 나머지 체크박스는 삭제한다.
체크박스를 <TextView

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/hobby"/>

이렇게 수정한가.
 
이미지뷰.. src지우고 얘네도 지운다.

android:src="@drawable/findimage
android:clickable="true"
android:onClick="findPhoto"

 
마지막 버튼은 통삭제
 
personreg에서 했던 객체 personinf로 가져온다.(자바임)

EditText name, studentid;
RadioGroup grade;
RadioButton one, two, three;
CheckBox hobby01, hobby02, hobby03;
ImageView findimage;
Button regist;

Uri photoUri;

Spinner major;

복붙해주고 아까 바꿨던 것들.. 에디트텍스트, 라디오그룹, 이런 거 텍스트뷰로 바꿔주고 삭제했던 것들은 같이 삭제한다.

TextView name, studentid;
TextView grade;
TextView hobby;
ImageView findimage;
Uri photoUri;
TextView major;

다시 PsersonReg에서 뷰 연결해주던 네임에서부터 파인드이미지까지 복사해오고 수정한다.

name = (TextView) findViewById(R.id.name);
studentid = (TextView) findViewById(R.id.studentid);
grade = (TextView) findViewById(R.id.grade);
hobby = (TextView) findViewById(R.id.hobby);
findimage = (ImageView) findViewById(R.id.findimage);
major = (TextView) findViewById(R.id.major);

 

Intent it = getIntent();

여기 있는 정보를 하나씩 꺼낼 것이다.
 
 
PsersonReg에서 
String str_namestr_studentidstr_gradestr_major_valuestr_hobbystr_photoUri가져온다.
 
 

Intent it = getIntent();
str_name = it.getStringExtra("it_name").toString();
name.setText(str_name);

이렇게 하면 인물등록에 이름이 추가될 것이다.
 
 
 
setContentView(R.layout.activity_main); 를 수정한다. (R.layout.activity_personinf);
 
 

public class PersonInfo extends AppCompatActivity {
//    private AppBarConfiguration appBarConfiguration;

private ActivityMainBinding binding;

여기도 수정한다.
private ActivityPersoninfBinding binding;
 
 
binding ActivityMainBinding.inflate(getLayoutInflater());

여기도 메인을 personinf로 수정한다.
ActivityPersoninfBinding
 

 
사진을 보면 인물등록에 성명이 등록한대로 나오는 것을 볼 수 있다.
 
 
수정된 PersonReg와 Personinfo의 코드이다.
 
PersonReg

package com.example.hyw_bpersonregistapp;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;
//import androidx.navigation.ui.AppBarConfiguration;

import com.example.hyw_bpersonregistapp.databinding.ActivityPersonregBinding;

public class PersonReg extends AppCompatActivity {
//    private AppBarConfiguration appBarConfiguration;
    public final static int REQUEST_PHOTO_CODE = 1;
    private ActivityPersonregBinding binding;

    EditText name, studentid;
    RadioGroup grade;
    RadioButton one, two, three;
    CheckBox hobby01, hobby02, hobby03;
    ImageView findimage;
    Button regist;

    Uri photoUri;

    Spinner major;
    String[] str_major = {"스마트IT", "소프트웨어융합", "빅데이터", "AI융합"};

    String str_name, str_studentid, str_grade, str_major_value, str_hobby, str_photoUri;

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

        binding = ActivityPersonregBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        setSupportActionBar(binding.toolbar);

        name = (EditText) findViewById(R.id.name);
        studentid = (EditText) findViewById(R.id.studentid);
        grade = (RadioGroup) findViewById(R.id.grade);
        one = (RadioButton) findViewById(R.id.one);
        two = (RadioButton) findViewById(R.id.two);
        three = (RadioButton) findViewById(R.id.three);
        hobby01 = (CheckBox) findViewById(R.id.hobby01);
        hobby02 = (CheckBox) findViewById(R.id.hobby02);
        hobby03 = (CheckBox) findViewById(R.id.hobby03);
        findimage = (ImageView) findViewById(R.id.findimage);
        regist = (Button) findViewById(R.id.regist);

        major = (Spinner) findViewById(R.id.major);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>
                (this, android.R.layout.simple_spinner_item, str_major);
        major.setAdapter(adapter);
        major.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                str_major_value = str_major[i];
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                Toast.makeText(getApplicationContext(), "전공선택필수", Toast.LENGTH_SHORT).show();
            }
        });

        regist.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                str_name = name.getText().toString();
                str_studentid = studentid.getText().toString();
                str_grade = "";
                if (one.isChecked()) str_grade = one.getText().toString();
                if (two.isChecked()) str_grade = two.getText().toString();
                if (three.isChecked()) str_grade = three.getText().toString();

                if (hobby01.isChecked()) str_hobby = str_hobby + hobby01.getText().toString();
                if (hobby02.isChecked()) str_hobby = str_hobby + hobby02.getText().toString();
                if (hobby03.isChecked()) str_hobby = str_hobby + hobby03.getText().toString();

                str_photoUri = photoUri.toString();

                Intent iit = new Intent(PersonReg.this, PersonInfo.class);
                iit.putExtra("it_name", str_name);
                iit.putExtra("it_studentid", str_studentid);
                iit.putExtra("it_grade", str_grade);
                iit.putExtra("it_hobby", str_hobby);
                iit.putExtra("it_major", str_major_value);
                iit.putExtra("it_photoUri", str_photoUri);
                startActivity(iit);
            }
        }); // regist

    } // onCreate

    public void findPhoto(View view) {
        Intent it = new Intent(Intent.ACTION_PICK,
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        it.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(it, REQUEST_PHOTO_CODE);
    } // findPhoto

    public void onActivityResult(int requestcode, int resultcode, Intent it) {
        super.onActivityResult(requestcode, resultcode, it);
        if (requestcode == REQUEST_PHOTO_CODE) {
            if (resultcode == RESULT_OK) {
                photoUri = it.getData();
                findimage.setImageURI(photoUri);
            }
        }
    } // onActivityResult

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_personreg, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings1) {
            // 홈 액비티비 전환
            Intent it = new Intent(this, MainActivity.class);
            startActivity(it);
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

 
 
PersonInfo

package com.example.hyw_bpersonregistapp;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import com.example.hyw_bpersonregistapp.databinding.ActivityPersoninfBinding;

public class PersonInfo extends AppCompatActivity {
//    private AppBarConfiguration appBarConfiguration;
    private ActivityPersoninfBinding binding;

    TextView name, studentid;
    TextView grade;
    TextView hobby;
    ImageView findimage;
    Uri photoUri;
    TextView major;

    String str_name, str_studentid, str_grade, str_major_value, str_hobby, str_photoUri;

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

        binding = ActivityPersoninfBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        setSupportActionBar(binding.toolbar);

        name = (TextView) findViewById(R.id.name);
        studentid = (TextView) findViewById(R.id.studentid);
        grade = (TextView) findViewById(R.id.grade);
        hobby = (TextView) findViewById(R.id.hobby);
        findimage = (ImageView) findViewById(R.id.findimage);
        major = (TextView) findViewById(R.id.major);

        Intent it = getIntent();
        str_name = it.getStringExtra("it_name").toString();
        name.setText(str_name);


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_personinf, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings2) {
            // 인물 등록 액비티비 전환
            Intent it = new Intent(this, PersonReg.class);
            startActivity(it);
            return true;
        } else if (id == R.id.action_settings1) {
            // 인물 등록 액비티비 전환
            Intent it = new Intent(this, MainActivity.class);
            startActivity(it);
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}