خلاصه نویسی های برنامه نویسی اندروید



package ir.ben.hassan;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.util.Date;
import java.util.Random;

public  class MainActivity extends AppCompatActivity {
    public static final int reqcod=24;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final FormInfo form=new FormInfo(this,R.id.forminfo);
        form.getBtsub().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String name=form.getInputname().getText().toString().trim();
                String phone=form.getInputphone().getText().toString().trim();
                String email=form.getInputemail().getText().toString().trim();

                if(form.isvalidinput(name,phone,email))
                {
                    Intent intent= new Intent(MainActivity.this,two.class);
                    intent.putExtra("name",name);
                    intent.putExtra("email",email);
                    if(form.getCbshare().isChecked())
                    intent.putExtra("phone",phone);
                    startActivityForResult(intent,reqcod);

                }
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==reqcod)
        {
            if(resultCode==RESULT_OK)
            {
                Toast.makeText(this, "messge", Toast.LENGTH_SHORT).show();
            }
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        menu.add("Open Browser").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Intent intent=new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("http://blog.ir"));
                startActivity(intent);
                return false;
            }
        });

        menu.add("Send sms").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Intent intent=new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("sms:09123456789"));
                intent.putExtra("sms_body","Hiiiii");
                startActivity(intent);
                return false;
            }
        });

        menu.add("Call").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Intent intent=new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("tel:09123456789"));
                startActivity(intent);
                return false;
            }
        });


        return super.onCreateOptionsMenu(menu);
    }
}

 این جا ما پرمیشن لازم نداشتیم چون فوضولی نکردیم تو کارش! خودش اسمس یا زنگشو می زنه

ولی اگه لازم داشتیم تو منیفست باید بریم بگیم: اینو همون بالا زیر package باید بنویسی

<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>

two.java:

package ir.ben.hassan;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.DragStartHelper;

import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;

public class two extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);
        TextView tv= findViewById(R.id.tv2);//alt+2enter to cast

        Toast.makeText(this, "hey", Toast.LENGTH_SHORT).show();

        Bundle extras=getIntent().getExtras();
        if(extras!=null)
        {
            Toast.makeText(this, "extra", Toast.LENGTH_SHORT).show();

            String email="";
            String phone="";
            String name="";
            if(extras.containsKey("email"))
                email=extras.getString("email");
            if(extras.containsKey("phone")){
            phone=extras.getString("phone");
            }
            if(extras.containsKey("name"))
                name=extras.getString("name");

            tv.setText("name: "+name+"\n");
            tv.append("email: "+email+"\n");
            tv.append("phone: "+phone+"\n");
        }
        else
            Toast.makeText(this, "no extra", Toast.LENGTH_SHORT).show();

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       MenuItem itemok= menu.add("Confirm");
       itemok.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
       itemok.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
           @Override
           public boolean onMenuItemClick(MenuItem item) {
               Intent intent=new Intent();//////just inverse of the other intent 
               intent.putExtra("messge","yoohoooo");
               setResult(RESULT_OK,intent);
               //or instead of the red lines could be just: setResult(RESULT_OK); no need to make intent
               finish();//finishes this activity which is no longer needed
               return false;
           }
       });
        return super.onCreateOptionsMenu(menu);
    }
}

کلیک راست->generate getter 

formifo.java

package ir.ben.hassan;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

public class FormInfo implements View.OnClickListener, CompoundButton.OnCheckedChangeListener {
    private Activity activity;
    private LinearLayout forminfo;
    private Context context;
    private EditText inputname;
    private EditText inputphone;
    private EditText inputemail;
    private CheckBox cbshare;
    private Button btsub;


    public FormInfo(Activity activity,int layoutId) {
        this.activity=activity;
        forminfo=activity.findViewById(layoutId);//here the instructor did a cast (LinearLayout)
        this.activity=activity;
        init();
    }

    private void init() {
        if(forminfo==null)
            return;
        inputname=forminfo.findViewById(R.id.inputname);//here the instructor did a cast (EditText)
        inputphone=forminfo.findViewById(R.id.inputphone);
        inputemail=forminfo.findViewById(R.id.inputemail);
        cbshare=forminfo.findViewById(R.id.cbshare);
        btsub=forminfo.findViewById(R.id.btsub);
        btsub.setOnClickListener(this);
        cbshare.setOnCheckedChangeListener(this);

    }
//این یاسی ها با گتر ساخته شدن
    public EditText getInputname() {
        return inputname;
    }

    public EditText getInputphone() {
        return inputphone;
    }

    public EditText getInputemail() {
        return inputemail;
    }

    public CheckBox getCbshare() {
        return cbshare;
    }

    public Button getBtsub() {
        return btsub;
    }

    @Override
    public void onClick(View v) {
            if(v.getId()==btsub.getId())
            {
                String email=inputemail.getText().toString().trim();
                String phone=inputphone.getText().toString().trim();
                String name=inputname.getText().toString().trim();
                if(isvalidinput(name,phone,email))
                {
                    Toast.makeText(activity, "Valid Input", Toast.LENGTH_SHORT).show();

                    Intent intent=new Intent(activity,two.class);
                    intent.putExtra("name",name);
                    intent.putExtra("email",email);
                    if(cbshare.isChecked())
                        intent.putExtra("phone",phone);
                    activity.startActivity(intent);

                }

            }
    }
//این قبلا پرایوت بود به خاطر گترها پابلیک شد
    public boolean isvalidinput(String name,String phone,String email) {
        if(name==null)
            name=inputname.getText().toString().trim();
        if(email==null)
            email=inputemail.getText().toString().trim();
        if(phone==null)
            phone=inputphone.getText().toString().trim();

        if (name.length() < 3) {
            Toast.makeText(activity, "Name should be at least 3 characters", Toast.LENGTH_SHORT).show();
            inputname.requestFocus();
            return false;
        }
        if (cbshare.isChecked() && !phone.isEmpty() && (phone.length() != 11 || !phone.startsWith("09"))) {
            Toast.makeText(activity, "Wrong mobile number", Toast.LENGTH_SHORT).show();
            inputphone.requestFocus();
            return false;
        }
        if (!email.contains("@") || (email.lastIndexOf('.') < email.indexOf('@')) || email.split("@").length>2)
        {
            Toast.makeText(activity, "Wrong email address", Toast.LENGTH_SHORT).show();
            inputemail.requestFocus();
            return false;
        }

        return true;
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(buttonView.getId()==cbshare.getId())
        {
            inputphone.setEnabled(isChecked);
        }
    }
}

main activity java

package ir.ben.hassan;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.util.Date;
import java.util.Random;

public  class MainActivity extends AppCompatActivity {
    public static final int reqcod=24;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final FormInfo form=new FormInfo(this,R.id.forminfo);
        form.getBtsub().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String name=form.getInputname().getText().toString().trim();
                String phone=form.getInputphone().getText().toString().trim();
                String email=form.getInputemail().getText().toString().trim();

                if(form.isvalidinput(name,phone,email))
                {
                    Intent intent= new Intent(MainActivity.this,two.class);
                    intent.putExtra("name",name);
                    intent.putExtra("email",email);
                    if(form.getCbshare().isChecked())
                    intent.putExtra("phone",phone);
                    startActivityForResult(intent,reqcod);

                }
            }
        });
//        form.getInputname().setTextColor(0xFFFF7002);
     //  form.getInputname().setTextColor(Color.argb(200,5240,67,4));
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==reqcod)
        {
            if(resultCode==RESULT_OK)
            {
                Toast.makeText(this, data.getStringExtra("messge"), Toast.LENGTH_SHORT).show();
            }
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

     getMenuInflater().inflate(R.menu.menu_main,menu);
        return super.onCreateOptionsMenu(menu);
    }

    }
}

باگ برا من اگه شماره تلفن وارد نکنه ولی زده باشه share اپ بسته میشه  اگه اون دستور null ها رو بذارم درست میشه؟

نع نشد

دلیلش این بوده:

if(extras.containsKey("phone")){
phone=extras.getString("phone").substring(2);

کد استاد اون substring رو برداشته بوده

 

میان بر: وقتی new می نویسی کنترل اسپس بزن . (منو پیدا کن من یه میان بر هستم که توش اینتر  و alt enter نداره!)

new ctrl space

itemok.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {


دریافت اطلاعات وارد شده در فرم

دو راه:

۱- تو همون جاوا یه کلاس اضافه کنی و بنویسی تو واقعیت با فرگمنت می کنیم اینا آموزشیه فقط

 

باگ استاد نوشت android:layout_centerInParent=true” ولی برا من نمیشه. چرا؟

جواب: چون لیوت من رو constrained بوده وقتی بذاریش relative layout درست میشه 

 

موقه استفاده از intent باید ایمپورت شود import android.content.Intent;

 

xml فرم(good.xml) این فرمو جلسه قبل ساختیم

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/forminfo"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_margin="15dp"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="horizontal">

        <EditText
            android:id="@+id/inputphone"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:hint="phone"
            android:maxLength="11"
            android:inputType="phone" />

        <EditText
            android:id="@+id/inputname"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="7"
            android:hint="Name"
            android:inputType="textPersonName" />

    </LinearLayout>

    <CheckBox
        android:id="@+id/cbshare"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:checked="true"
        android:text="Share my number" />

    <View
        android:id="@+id/view"
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="@color/colorPrimary" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="horizontal">

        <EditText
            android:id="@+id/inputemail"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:hint="email"
            android:inputType="textEmailAddress" />

        <ImageView
            android:id="@+id/imageView"
            android:layout_marginTop="5dp"
            android:layout_width="80dp"
            android:layout_height="40dp"
            android:layout_weight="1"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/email" />


    </LinearLayout>

    <Button
        android:id="@+id/btsub"
        style="@style/Widget.AppCompat.Button.Colored"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Submit" />

    <View
        android:id="@+id/view2"
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="@android:color/holo_orange_dark" />

</LinearLayout>

 بعدش یه java هم براش می سازیم: (FormInfo.java) می زنی new>Java Class

نکته مهم در این کد intent هست intent ها ماموریت انجام میدن وقتی میخوایم یه چیزی رو از یه activity بفرستیم به یکی دیگه یه intent می فرستیم. بعد اینا می تونن فقط برن باعث شن activity بعدی باز شه یا این که یه اطلاعاتی هم با خودشون ببرن. اون اطلاعاته extra هستن 

 

نکته بعدی email.split( میاد string رو بر اساس اون چیزی که تو پرانتز ورودی بهش میدیم تبدیل می کنه به تعدادی آرایه. ینی هر جا رسید به اون ورودی، string رو می شکنه

package ir.ben.hassan;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

public class FormInfo implements View.OnClickListener, CompoundButton.OnCheckedChangeListener {
    private Activity activity;
    private LinearLayout forminfo;
    private Context context;
    private EditText inputname;
    private EditText inputphone;
    private EditText inputemail;
    private CheckBox cbshare;
    private Button btsub;


    public FormInfo(Activity activity,int layoutId) {
        this.activity=activity;
        forminfo=activity.findViewById(layoutId);//here the instructor did a cast (LinearLayout)
        this.activity=activity;
        init();
    }

    private void init() {
        if(forminfo==null)
            return;
        inputname=forminfo.findViewById(R.id.inputname);//here the instructor did a cast (EditText)
        inputphone=forminfo.findViewById(R.id.inputphone);
        inputemail=forminfo.findViewById(R.id.inputemail);
        cbshare=forminfo.findViewById(R.id.cbshare);
        btsub=forminfo.findViewById(R.id.btsub);
        btsub.setOnClickListener(this);
        cbshare.setOnCheckedChangeListener(this);

    }

    @Override
    public void onClick(View v) {
            if(v.getId()==btsub.getId())
            {
                String email=inputemail.getText().toString().trim();
                String phone=inputphone.getText().toString().trim();
                String name=inputname.getText().toString().trim();
                if(isvalidinput(name,phone,email))
                {
                    Toast.makeText(activity, "Valid Input", Toast.LENGTH_SHORT).show();

                    Intent intent=new Intent(activity,two.class);
                    intent.putExtra("name",name);
                    intent.putExtra("email",email);
                    if(cbshare.isChecked())
                        intent.putExtra("phone",phone);
                    activity.startActivity(intent);
                }
            }
    }

    private boolean isvalidinput(String name,String phone,String email) {
        if (name.length() < 3) {
            Toast.makeText(activity, "Name should be at least 3 characters", Toast.LENGTH_SHORT).show();
            inputname.requestFocus();
            return false;
        }
        if (cbshare.isChecked() && !phone.isEmpty() && (phone.length() != 11 || !phone.startsWith("09"))) {
            Toast.makeText(activity, "Wrong mobile number", Toast.LENGTH_SHORT).show();
            inputphone.requestFocus();
            return false;
        }
        if (!email.contains("@") || (email.lastIndexOf('.') < email.indexOf('@')) || email.split("@").length>2)
        {
            Toast.makeText(activity, "Wrong email address", Toast.LENGTH_SHORT).show();
            inputemail.requestFocus();
            return false;
        }

        return true;
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(buttonView.getId()==cbshare.getId())
        {
            inputphone.setEnabled(isChecked);
        }
    }
}

تو activity main.xml آخرش یه فرم include شده

<include layout="@layout/good" android:id="@+id/forminfo"/>

تو mainactivity java : 

 setContentView(R.layout.activity_main);
 FormInfo form=new FormInfo(this,R.id.forminfo);

تو activity _two xml فقط یه textview با آیدی tv2 هست

تو javaش:

package ir.ben.hassan;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.DragStartHelper;

import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class two extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);
        TextView tv= findViewById(R.id.tv2);//alt+2enter to cast

        Toast.makeText(this, "hey", Toast.LENGTH_SHORT).show();

        Bundle extras=getIntent().getExtras();
        if(extras!=null)
        {
            Toast.makeText(this, "extra", Toast.LENGTH_SHORT).show();

            String email="";
            String phone="";
            String name="";
            if(extras.containsKey("email"))
                email=extras.getString("email");
            if(extras.containsKey("phone")){
            phone=extras.getString("phone").substring(2);\\substring from char 2 to end
            }
            if(extras.containsKey("name"))
                name=extras.getString("name");

            tv.setText("name: "+name+"\n");
            tv.append("email: "+email+"\n");
            tv.append("phone: "+phone+"\n");
        }
        else
            Toast.makeText(this, "no extra", Toast.LENGTH_SHORT).show();

    }
}

آخرین ارسال ها

آخرین جستجو ها


فروش تجهیزات مخابراتی دانلود کتاب- کنکوری ها مجله خبری فناوری اطلاعات، سئو، دیجیتال مراکتینگ و برنامه نویسی فروشگاه فایل iranekade Navid Malek Personal Blog جستجو گر فایل های اینترنت تکنولوژی جدید و به روز مطالب اینترنتی novel
دزدگ