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

1번버튼을 클릭하면 새로운 버튼을 추가하고 새로운 기능을 부가하는?

0 추천

지금 클립보드 어플을 만들어보고싶어서 제작중입니다..

메인 액티인

src/com.andro/

ClipEXActivity.java

package com.andro;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.ClipboardManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;


@SuppressWarnings("deprecation")
public class ClipEXActivity extends Activity implements View.OnClickListener  {
	
	private NotificationManager nm = null;
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        ((Button) findViewById(R.id.button1)).setOnClickListener(this);
        ((Button) findViewById(R.id.button2)).setOnClickListener(this);
       
        setLayout();
    }

    @Override
    public void onClick(View v) {
        ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        String txt = null;
        
        switch (v.getId()) {
        case R.id.button1: // 
            txt = ((EditText) findViewById(R.id.editText1)).getText().toString();
            clipboardManager.setText(txt);
            break;
        case R.id.button2:
            txt = clipboardManager.getText().toString();
            ((TextView) findViewById(R.id.show)).setText(txt);
            break;
        case R.id.notification:
            nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
             
            // PendingIntent를 등록 하고, noti를 클릭시에 어떤 클래스를 호출 할 것인지 등록. 
            PendingIntent intent = PendingIntent.getActivity(
            		ClipEXActivity.this, 0, 
                    new Intent(ClipEXActivity.this, NotificationConfirm.class),0);
             
            String ticker = et_Tiker.getText().toString();
            String title = et_Title.getText().toString();
            String text = et_Message.getText().toString();
                                         
            // status bar 에 등록될 메시지(Tiker, 아이콘, 그리고 noti가 실행될 시간)
            Notification notification =
                new Notification(android.R.drawable.btn_star,ticker, System.currentTimeMillis());
            //nm.setOngoing(true);
            //진행중(ONGOING)에 notification을 추가할때 .FLAG_ONGOING_EVENT
            notification.flags = notification.FLAG_ONGOING_EVENT;
            // List에 표시될 항목
            notification.setLatestEventInfo(ClipEXActivity.this,title, text, intent);
             
            // noti를 클릭 했을 경우 자동으로 noti Icon 제거
            //notification.flags = notification.flags | notification.FLAG_AUTO_CANCEL;
             
            // 1234 notification 의 고유아이디
            nm.notify(1234, notification);
            Toast.makeText(ClipEXActivity.this, "등록",Toast.LENGTH_SHORT).show();
            break;
         default:
            break;
        }
    }
    private EditText et_Tiker = null;
    private EditText et_Title = null;
    private EditText et_Message = null;
    private Button btn_Commit = null;
     
    private void setLayout() {
        btn_Commit = (Button) findViewById(R.id.notification);
        btn_Commit.setOnClickListener(this);
        et_Tiker = (EditText) findViewById(R.id.editText1);
        et_Title = (EditText) findViewById(R.id.editText1);
        et_Message = (EditText) findViewById(R.id.editText1);
    }
	

}

src/com.andro/

NotificationConfirm.java

package com.andro;

import android.app.Activity;
import android.app.NotificationManager;
import android.os.Bundle;
import android.widget.TextView;

public class NotificationConfirm extends Activity {

	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        tv.setText("노티피케이션 제거.");
        setContentView(tv);
         
        // notification 매니저 생성
        NotificationManager nm = 
                (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
         
        // 등록된 notification 을 제거 한다.
        nm.cancel(1234);
         
    }
	
}

res/layout

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
	<LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
			<EditText
                android:id="@+id/edit_mclip"
                android:layout_width="180sp"
                android:layout_height="wrap_content"
                android:hint="@string/hint"
                android:layout_marginTop="4sp" />
			<Button
                android:id="@+id/button_msave"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/save"
                android:textSize="13sp" />
			<Button
                android:id="@+id/button_mcopy"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/copy"
                android:textSize="12sp" />
	</LinearLayout>
	<LinearLayout
	    	android:id="@+id/layout"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
	</LinearLayout>
   	
    <Button
        android:text="@string/tipping"
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button
        android:text="@string/notification"
        android:id="@+id/notification"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView
        android:id="@+id/show"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
 
    
</LinearLayout>

맨위의 저장버튼을 누르게되면

양식은 같게

edittext에는 저장버튼 누르기전 쓴 내용을, 표시해주고

save 버튼은 나중에 그줄의 edittext를 수정하게된다면 수정후 저장할수있게 ,

copy 버튼은 위의 양식과 같게 복사 기능을 가지고있는 버튼입니다

 

이걸 하나만 추가할게아니라 맨위에 메인이 되는 양식을 계속해서 추가해주는걸 해주고싶거든요..

 

 

 

혹시몰라 스트링 파일 추가..

string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">클리우드</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    
    <string name="save">저장</string>
    <string name="copy">복사하기</string>
    <string name="tipping">붙여넣기</string>
    <string name="hint">input</string>
	
	<string name="status">노티피케이션 제거</string>
	<string name="notification">등록</string>
	

</resources>

 

fairytale (250 포인트) 님이 2014년 6월 9일 질문

2개의 답변

0 추천
뷰 동적생성 관련해서 알아보시기 바랍니다...코드만으로 짜기는 번거롭기 때문에 일정한 양식이라면 xml파일로 제작해서 동적으로 추가할 수 있습니다~
YeonMin (17,860 포인트) 님이 2014년 6월 10일 답변
0 추천
제가 질문을 제대로 이해를 했는지는 모르겠지만 View의 visibility 속성을 사용해보시면 어떨까요?

기존에는 감추고 있다가 필요한 시점에 보여주면 되니 한결 쉬워지지 않을까싶네요.
인연 (31,880 포인트) 님이 2014년 6월 10일 답변
...