amin-rz

ساخت تابع و فراخوانی

9 ارسال در این موضوع قرار دارد

سلام.

من تو برنامم چندتا دکمه دارم که که همه شون چند خط کد مشترک اجرا می کنن.

حالا برای اینکه کدها طولانی نشه این چند خط کد رو می خوام تو یه تابع بذارم و بعد داخل رویداد onclick دکمه ها اون تابع رو فراخوانی کنم.

ولی نمیشه.:huh:

این برنامه بدون تابع هست که  رویداد ibtn6  و ibtn7 و btn11 چندتا کار تکراری رو انجام میدن

[shcode=java]

package com.example.smsbaaz;

import android.os.Bundle;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.content.res.Resources;

import android.graphics.Point;

import android.text.Layout;

import android.view.Display;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.ViewGroup.LayoutParams;

import android.webkit.WebView;

import android.widget.Button;

import android.widget.ImageButton;

import android.widget.LinearLayout;

import android.widget.RelativeLayout;

import android.widget.ScrollView;

import android.widget.TextView;

public class MainActivity extends Activity {

    @SuppressLint("NewApi")

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        final ScrollView scrollview2 = (ScrollView) findViewById(R.id.scrollView2);

        final ScrollView scrollview3 = (ScrollView) findViewById(R.id.scrollView3);

        final ScrollView scrollview4 = (ScrollView) findViewById(R.id.scrollView4);

        final Button btn11 = (Button) findViewById(R.id.button11);

        WebView webview = (WebView) findViewById(R.id.webView1);

        final ImageButton ibtn1 = (ImageButton) findViewById(R.id.imageButton1);

        final ImageButton ibtn2 = (ImageButton) findViewById(R.id.imageButton2);

        final ImageButton ibtn3 = (ImageButton) findViewById(R.id.imageButton3);

        final ImageButton ibtn4 = (ImageButton) findViewById(R.id.imageButton4);

        final ImageButton ibtn5 = (ImageButton) findViewById(R.id.imageButton5);

        final ImageButton ibtn6 = (ImageButton) findViewById(R.id.imageButton6);

        final ImageButton ibtn7 = (ImageButton) findViewById(R.id.imageButton7);

        final ImageButton ibtn8 = (ImageButton) findViewById(R.id.imageButton8);

       

        webview.loadUrl("file:///android_asset/moghadame.txt");

       

        {//home

           

            Display display = getWindowManager().getDefaultDisplay();

            Point size = new Point();

            display.getSize(size);

            final int width = size.x;

            int height = size.y;

            ibtn1.setLayoutParams(new LinearLayout.LayoutParams(width/4, width/4));

            ibtn2.setLayoutParams(new LinearLayout.LayoutParams(width/4, width/4));

            ibtn3.setLayoutParams(new LinearLayout.LayoutParams(width/4, width/4));

            ibtn4.setLayoutParams(new LinearLayout.LayoutParams(width/4, width/4));

            ibtn5.setLayoutParams(new LinearLayout.LayoutParams(width/2, width/2));

            ibtn6.setLayoutParams(new LinearLayout.LayoutParams(width/2, width/2));

            ibtn7.setLayoutParams(new LinearLayout.LayoutParams(width/4, width/4));

            ibtn8.setLayoutParams(new LinearLayout.LayoutParams(width/4, width/4));

            btn11.setLayoutParams(new LinearLayout.LayoutParams(width/2, width/4));

            scrollview2.setLayoutParams(new LinearLayout.LayoutParams(width,height-width)) ;

            scrollview3.setLayoutParams(new LinearLayout.LayoutParams(0,0)) ;

            scrollview4.setLayoutParams(new LinearLayout.LayoutParams(0,0)) ;

        }

       

       

       

        btn11.setOnClickListener(new OnClickListener() {

           

            @Override

            public void onClick(View v) {

                // TODO Auto-generated method stub

          

                Display display = getWindowManager().getDefaultDisplay();

                Point size = new Point();

                display.getSize(size);

                final int width = size.x;

                int height = size.y;

                scrollview2.setLayoutParams(new LinearLayout.LayoutParams(0,0)) ;

                scrollview3.setLayoutParams(new LinearLayout.LayoutParams(0,0)) ;

                ibtn5.setLayoutParams(new LinearLayout.LayoutParams(0,0));

                ibtn6.setLayoutParams(new LinearLayout.LayoutParams(0,0));

                scrollview4.setLayoutParams(new LinearLayout.LayoutParams(width,height-width)) ;

            }

        });

       

       

        ibtn6.setOnClickListener(new OnClickListener() {

           

            @Override

            public void onClick(View v) {

                // TODO Auto-generated method stub

                Display display = getWindowManager().getDefaultDisplay();

                Point size = new Point();

                display.getSize(size);

                final int width = size.x;

                int height = size.y;

                scrollview2.setLayoutParams(new LinearLayout.LayoutParams(0,0)) ;

                scrollview4.setLayoutParams(new LinearLayout.LayoutParams(0,0)) ;

                ibtn5.setLayoutParams(new LinearLayout.LayoutParams(0,0));

                ibtn6.setLayoutParams(new LinearLayout.LayoutParams(0,0));

                scrollview3.setLayoutParams(new LinearLayout.LayoutParams(width,height-width)) ;

            }

        });

        ibtn7.setOnClickListener(new OnClickListener() {

           

            @Override

            public void onClick(View v) {

                // TODO Auto-generated method stub

                Display display = getWindowManager().getDefaultDisplay();

                Point size = new Point();

                display.getSize(size);

                final int width = size.x;

                int height = size.y;

                scrollview2.setLayoutParams(new LinearLayout.LayoutParams(0,0)) ;

                scrollview4.setLayoutParams(new LinearLayout.LayoutParams(0,0)) ;

                ibtn5.setLayoutParams(new LinearLayout.LayoutParams(0,0));

                ibtn6.setLayoutParams(new LinearLayout.LayoutParams(0,0));

                scrollview3.setLayoutParams(new LinearLayout.LayoutParams(width,height-width)) ;

            }

        });

       

      

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

    }

}

[/shcode]

حالا من یه تابع اینطوری ساختم که کدهای تکراری رو داخلش گذاشتم:

[shcode=java]

public void web() {

                // TODO Auto-generated method stub

                Display display = getWindowManager().getDefaultDisplay();

                Point size = new Point();

                display.getSize(size);

                final int width = size.x;

                int height = size.y;

                scrollview2.setLayoutParams(new LinearLayout.LayoutParams(0,0)) ;

                scrollview3.setLayoutParams(new LinearLayout.LayoutParams(0,0)) ;

                ibtn5.setLayoutParams(new LinearLayout.LayoutParams(0,0));

                ibtn6.setLayoutParams(new LinearLayout.LayoutParams(0,0));

                scrollview4.setLayoutParams(new LinearLayout.LayoutParams(width,height-width)) ;[/shcode]

و تو رویداد دکمه ها اینطور فراخوانی می کنم:

[shcode=java]

btn11.setOnClickListener(new OnClickListener() {

           

            @Override

            public void onClick(View v) {

                // TODO Auto-generated method stub

  web();

      

            }

        });

[/shcode]

که کلی خطا میده.تابع رو هرجای پروژه که میذارم فایده نداره.

چکار کنم؟:huh:

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

شما بگید برنامتون دارای چه چیزایی هست و چه میخواید تا بهترین کمک رو بهتون رو بکنم

بنظرم با این کدا داری خودتو گیچ میکنی

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برنامه من چندتا دكمه و اسكرول ويو داخلش هست(كه متناسب با سايز صفحه نمايش صفحه رو پر ميكنن). وقتي رو بعضي از دكمه ها كليك مي كني هر چي وسط صفحه هست(دكمه،اسكرول،تكست ويو و ...) ناپديد ميشن(اندازه شون صفر ميشه) و يه سري چيزاي ديگه نمايش داده ميشه.

حالا چون هفت هشت تا دكمه هستن كه نيازه بعد از كليك روشون وسط صفحه پاك بشه مي خوام اين دستورات(مثل دستورات ibtn6) رو تو يه تابع بذارم بعد تو رويداد onclick اون هفت هشت تا دكمه فراخواني كنم.

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای دکمه ها چرا از لیست ویو استفاده نمیکنی.

که با کلیک روی هر ایتم اونی که میخوای اجرا شه

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

نماي نرم افزار اينطوره.شبيه كاشي هاي زنده ويندوز فون 8 هست.

اصلا ليست ويو به كارم نمياد.

شما فكر كن ۴تا دكمه داريم كه با كليك روي هر كدوم,سايز تمام دكمه ها صفر ميشه.

نمي خوام دستورات رو ۴بار براي ۴تا دكمه بنويسم.مي خوام دستورات رو تو يه تابع بذارم و فقط تو رويداد دكمه ها فراخوانيش كنم.

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

شما اینطور کنید که برای هر چندتا دکمه رو ست کنید به کلیکر

بعد یه تابع برای کلش بزنید

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

بخشي از دستورات دكمه ها مشابه هستن.

دستورات متفاوتي هم براي هر دكمه هست.

آخرش نگفتيد.

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

شما دستوراتتون رو دارید

کافیه اخر هر دستور دکمه رو به یه onclick بزنید

اخرم برای همه یکی استفاده کنید

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ميشه يه مثال بزني كه چطوريه ايني كه ميگي.

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری