如何在Windows功能上向按钮添加操作?

时间:2014-10-10 08:46:49

标签: android windows interface

大家好我是android的新手,我正在尝试使用Map开发一个应用程序,当我点击Infowindow(当用户点击Marker时出现的气泡)时,会出现一个弹出窗口(在屏幕截图中) )并由Google WindowFeature调用。

问题在于,如果我试图出现并消失另一个按钮,如电话按钮(icotelephone)一切正常,但如果我尝试制作一些不与布局上的元素相关的东西,请开始新的通话或应用程序崩溃之类的东西。
为什么?
在WindowFeature的屏幕截图和声明OnClickListener的片段代码下面。非常感谢你!

WindowFeature

此处我的代码段:

public Hide_Unhide (View v){
        barrainfo = (LinearLayout)v.findViewById(R.id.links_bar);         //tutta la barra
        icotelefono = (ImageButton) v.findViewById(R.id.telephone_icon); //pulsante chiamata
        icoemail = (ImageButton) v.findViewById(R.id.email_icon);         //pulsante nuova mail
        icofacebook = (ImageButton) v.findViewById(R.id.facebook_icon);  //pulsante facebook
        icotwitter = (ImageButton) v.findViewById(R.id.twitter_icon);     //pulsante twitter
        icosito = (ImageButton) v.findViewById(R.id.sito_icon);       //pulsante sito web


        /* * * * * Try share button * * * */
        /*******************************/

        ImageButton trysharebutton = (ImageButton) v.findViewById(R.id.share_icon);

        trysharebutton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "Bottone condividi", Toast.LENGTH_LONG);
            }
        });

        /*******************************/



    };

    public void mostra_nascondi(int numero_di_informazioni, int info_number){   //numero di informazioni = 0 (no info) - 1 (si info)
        /*if (numero_di_informazioni <= 0){                                     //info_number = identifica il social o il telefono o l'email
            barrainfo.setVisibility(View.GONE);                                 //se per l'info_number = 3 corrisponde un numero informazioni = 0 
        }else                                                                   //il locale non ha l'email
        {                                                                       //
            barrainfo.setVisibility(View.VISIBLE);                              //  - - - Schema Informazioni - - - - - - - - - -  
                                                                                // - - - - - - - - + - - - - - - - - - - - - - - -
        }*/                                                                     // | 2: telefono   | num_di_informazioni [0-1]   |
                                                                                // | 3: email      | num_di_informazioni [0-1]   |
                                                                                // | 5: facebook   | num_di_informazioni [0-1]   |
                                                                                // | 6: twitter    | num_di_informazioni [0-1]   |
                                                                                // | 7: sito       | num_di_informazioni [0-1]   |
                                                                                //  - - - - - - - - - - - - - - - - - - - - - - -  

        switch (info_number){
        case 0:
            if (numero_di_informazioni <= 0){   
                barrainfo.setVisibility(View.GONE);                                 
            }else                                                                   
            {   
                barrainfo.setVisibility(View.VISIBLE);                                                                                              
            }
            break;

        case 2:     //telefono
            if(numero_di_informazioni <= 0)
            {
                icotelefono.setVisibility(View.GONE);


            }else
            {
                icotelefono.setVisibility(View.VISIBLE);
                //forse qui ci andrà l'onclick listener del pulsante
                icotelefono.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        MainActivity prova = new MainActivity();
                        prova.prova2();
                    }
                });
            }

            break;
        case 3:     //email
            if(numero_di_informazioni <= 0)
            {
                icoemail.setVisibility(View.GONE);
            }else
            {
                icoemail.setVisibility(View.VISIBLE);
            }           
            break;
        case 5:     //facebook
            if(numero_di_informazioni <= 0)
            {
                icofacebook.setVisibility(View.GONE);
            }else
            {
                icofacebook.setVisibility(View.VISIBLE);
            }

            break;
        case 6:     //twitter
            if(numero_di_informazioni <= 0)
            {
                icotwitter.setVisibility(View.GONE);
            }else
            {
                icotwitter.setVisibility(View.VISIBLE);
            }

            break;
        case 7:     //sito
            if(numero_di_informazioni <= 0)
            {
                icosito.setVisibility(View.GONE);
            }else
            {
                icosito.setVisibility(View.VISIBLE);
            }

            break;
        }   

    }
}

这样就没有问题:

/* * * * * Try share button * * * */
        /*******************************/

        ImageButton trysharebutton = (ImageButton) v.findViewById(R.id.share_icon);

        trysharebutton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                icotelefono.setVisibility(View.GONE);
            }
        });

        /*******************************/

但是,如果我尝试打电话或敬酒,应用程序崩溃:/

/* * * * * Try share button * * * */
        /*******************************/

        ImageButton trysharebutton = (ImageButton) v.findViewById(R.id.share_icon);

        trysharebutton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "Bottone condividi", Toast.LENGTH_LONG);
            }
        });

        /*******************************/

Logcat:

10-10 10:55:22.601: W/dalvikvm(18101): threadid=1: thread exiting with uncaught exception (group=0x41b91c08)
10-10 10:55:22.606: E/AndroidRuntime(18101): FATAL EXCEPTION: main
10-10 10:55:22.606: E/AndroidRuntime(18101): Process: com.example.findmyclients, PID: 18101
10-10 10:55:22.606: E/AndroidRuntime(18101): java.lang.NullPointerException
10-10 10:55:22.606: E/AndroidRuntime(18101):    at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:114)
10-10 10:55:22.606: E/AndroidRuntime(18101):    at com.example.findmyclients.Hide_Unhide$1.onClick(Hide_Unhide.java:53)
10-10 10:55:22.606: E/AndroidRuntime(18101):    at android.view.View.performClick(View.java:4654)
10-10 10:55:22.606: E/AndroidRuntime(18101):    at android.view.View$PerformClick.run(View.java:19438)
10-10 10:55:22.606: E/AndroidRuntime(18101):    at android.os.Handler.handleCallback(Handler.java:733)
10-10 10:55:22.606: E/AndroidRuntime(18101):    at android.os.Handler.dispatchMessage(Handler.java:95)
10-10 10:55:22.606: E/AndroidRuntime(18101):    at android.os.Looper.loop(Looper.java:146)
10-10 10:55:22.606: E/AndroidRuntime(18101):    at android.app.ActivityThread.main(ActivityThread.java:5602)
10-10 10:55:22.606: E/AndroidRuntime(18101):    at java.lang.reflect.Method.invokeNative(Native Method)
10-10 10:55:22.606: E/AndroidRuntime(18101):    at java.lang.reflect.Method.invoke(Method.java:515)
10-10 10:55:22.606: E/AndroidRuntime(18101):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
10-10 10:55:22.606: E/AndroidRuntime(18101):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
10-10 10:55:22.606: E/AndroidRuntime(18101):    at dalvik.system.NativeStart.main(Native Method)

0 个答案:

没有答案