简体   繁体   中英

How to insert Phone icon in every line in second Activity in Android code

I am doing a Android app where I want to show each travel's names with their contact numbers line by line. Here is the code:

AppActivity.java

package com.example.android;

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

public class AppActivity extends Activity{

    Button button;

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

        button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent i=new Intent(AppActivity.this, App2Activity.class);
                i.putExtra("name1","Travels1");
                i.putExtra("number1","7843564358");
                i.putExtra("name2","Travels2");
                i.putExtra("number2","7664764358");
                i.putExtra("name3","Travels3");
                i.putExtra("number3","8804764358");
                startActivity(i);
            }
        });   
    }
}

main.xml

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<Button
    android:id="@+id/button1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/travel_button" />

</LinearLayout>

App2Activity.java

package com.example.android;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class App2Activity extends Activity {
    String name1,name2,name3;
    Button btnOne, btnTwo, btnThree;

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

        btnOne = (Button)findViewById(R.id.btnOne);
        btnTwo = (Button)findViewById(R.id.btnTwo);
        btnThree = (Button)findViewById(R.id.btnThree);

        String number1=getIntent().getStringExtra("number1");
        String number2=getIntent().getStringExtra("number2");
        String number3=getIntent().getStringExtra("number3");

        btnOne.setText(number1);
        btnTwo.setText(number2);
        btnThree.setText(number3);

        btnOne.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent callIntent = new Intent(Intent.ACTION_DIAL);
                callIntent.setData(Uri.parse("tel:"+btnOne.getText()));
                startActivity(callIntent);
            }
        });

        btnTwo.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent callIntent = new Intent(Intent.ACTION_DIAL);
                callIntent.setData(Uri.parse("tel:"+btnTwo.getText()));
                startActivity(callIntent);
            }
        });

        btnThree.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent callIntent = new Intent(Intent.ACTION_DIAL);
                callIntent.setData(Uri.parse("tel:"+btnThree.getText()));
                startActivity(callIntent);
            }
        });
    }
}

main2.xml

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<Button
    android:id="@+id/btnOne"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<Button
    android:id="@+id/btnTwo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<Button
    android:id="@+id/btnThree"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" /> 

</LinearLayout>

strings.xml

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

<resources>

    <string name="app_name">Travel Details</string>
    <string name="travel_button">Travels and Holidays</string>

</resources>

AndroidManifest.xml

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

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />
    <uses-permission android:name="android.permission.CALL_PHONE" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".AppActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:label="@string/app_name"
            android:name=".App2Activity" >
        </activity>
    </application>

</manifest>

When I click on "Travels and Holidays" button in the first activity, it goes to another activity and displays the following:

7843564358
7664764358
8804764358

When clicked on this number, it goes to call option of that number.

But what I want is: When I click on "Travels and Holidays" button in the first activity, it should go to another activity and should display the following:

Travels1 - 7843564358    Phone Icon
Travels2 - 7664764358    Phone Icon
Travels3 - 8804764358    Phone Icon

When I click on the Phone Icon of a particular travel, it should go to call option of that number.

How to fix this? Please help. Thanks in advance.

First change your main2 xml file like this

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

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

        <TextBox
            android:id="@+id/txtOne"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Travels - 1" />

        <TextBox
            android:id="@+id/txtNum1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <ImageButton
            android:id="@+id/btnCall1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/abc_ic_menu_paste_mtrl_am_alpha" />
    </LinearLayout>

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

        <TextBox
            android:id="@+id/txtTwo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Travels - 2" />

        <TextBox
            android:id="@+id/txtNum2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <ImageButton
            android:id="@+id/btnCall2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/abc_ic_menu_paste_mtrl_am_alpha" />
    </LinearLayout>

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

        <TextBox
            android:id="@+id/txtThree"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Travels - 3" />

        <TextBox
            android:id="@+id/txtNum3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <ImageButton
            android:id="@+id/btnCall3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/abc_ic_menu_paste_mtrl_am_alpha" />
    </LinearLayout>

</LinearLayout>

and change you App2Activity class like this

String name1,name2,name3;
    ImageButton btnOne, btnTwo, btnThree;
    TextView txtNum1,txtNum2,txtNum3;

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

        btnOne = (ImageButton)findViewById(R.id.btnOne);
        btnTwo = (ImageButton)findViewById(R.id.btnTwo);
        btnThree = (ImageButton)findViewById(R.id.btnThree);

        txtNum1=(TextView)findViewById(R.id.txtNum1);
        txtNum2=(TextView)findViewById(R.id.txtNum2);
        txtNum3=(TextView)findViewById(R.id.txtNum3);


        String number1=getIntent().getStringExtra("number1");
        String number2=getIntent().getStringExtra("number2");
        String number3=getIntent().getStringExtra("number3");

        txtNum1.setText(number1);
        txtNum2.setText(number2);
        txtNum3.setText(number3);

        btnOne.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent callIntent = new Intent(Intent.ACTION_DIAL);
                callIntent.setData(Uri.parse("tel:"+btnOne.getText()));
                startActivity(callIntent);
            }
        });

        btnTwo.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent callIntent = new Intent(Intent.ACTION_DIAL);
                callIntent.setData(Uri.parse("tel:"+btnTwo.getText()));
                startActivity(callIntent);
            }
        });

        btnThree.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent callIntent = new Intent(Intent.ACTION_DIAL);
                callIntent.setData(Uri.parse("tel:"+btnThree.getText()));
                startActivity(callIntent);
            }
        });
    }

But i must say that this is not a better way to do this... You can use custome ListView . For study about listview link-1 , link-2

1.You have to replace main2.xml file's code with this one

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/llContainer1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/travel1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="Travels1 - " />

        <TextView
            android:id="@+id/txtNumber1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="10dip"
            android:layout_marginRight="20dip"
            android:text="325235" />

        <ImageButton
            android:id="@+id/btnPhone1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/stat_sys_phone_call" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/llContainer2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/travel2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="Travels2 - " />

        <TextView
            android:id="@+id/txtNumber2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="10dip"
            android:layout_marginRight="20dip"
            android:text="455345" />

        <ImageButton
            android:id="@+id/btnPhone2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/stat_sys_phone_call" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/llContainer3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/travel3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="Travels3 - " />

        <TextView
            android:id="@+id/txtNumber3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="10dip"
            android:layout_marginRight="20dip"
            android:text="453532" />

        <ImageButton
            android:id="@+id/btnPhone3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/stat_sys_phone_call" />
    </LinearLayout>

</LinearLayout>
  1. Change App2Activity.java code as follows:

    ImageButton btnPhoneOne, btnPhoneTwo, btnPhoneThree; TextView txtNum1, txtNum2, txtNum3;

     @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main2); btnPhoneOne = (ImageButton) findViewById(R.id.btnPhone1); btnPhoneTwo = (ImageButton) findViewById(R.id.btnPhone2); btnPhoneThree = (ImageButton) findViewById(R.id.btnPhone3); txtNum1 = (TextView) findViewById(R.id.txtNumber1); txtNum2 = (TextView) findViewById(R.id.txtNumber2); txtNum3 = (TextView) findViewById(R.id.txtNumber3); String number1 = getIntent().getStringExtra("number1"); String number2 = getIntent().getStringExtra("number2"); String number3 = getIntent().getStringExtra("number3"); txtNum1.setText(number1); txtNum2.setText(number2); txtNum3.setText(number3); btnPhoneOne.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent callIntent = new Intent(Intent.ACTION_DIAL); callIntent.setData(Uri.parse("tel:" + txtNum1.getText())); startActivity(callIntent); } }); btnPhoneTwo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent callIntent = new Intent(Intent.ACTION_DIAL); callIntent.setData(Uri.parse("tel:" + txtNum2.getText())); startActivity(callIntent); } }); btnPhoneThree.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent callIntent = new Intent(Intent.ACTION_DIAL); callIntent.setData(Uri.parse("tel:" + txtNum3.getText())); startActivity(callIntent); } }); 

    }

  2. You can see image main2.xml screenshot 在此处输入图片说明

Use Image button And use an Phone icon Image in xml file.

like this:

<ImageButton
            android:id="@+id/btnCall1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/abc_ic_menu_paste_mtrl_am_alpha" />

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM