綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] ContextMenu快閃功能問題

[複製連結] 查看: 917|回覆: 1|好評: 0
跳轉到指定樓層
樓主
pc.jyun | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2015-6-26 04:32

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
小弟我因初學者正在看一本文淵工作室所發行的書
卡在這個範例,功能字體和背景顏色都沒動作是否
有大大可幫忙看一下那裡有錯誤   
開發軟體:AndroidStudio  AVD:Samsung Note2 API19

程式碼如下
layout:

RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/myLayout"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/txtShow1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="請按此1秒修改背景顏色"
        android:textColor="#0000FF"
        android:textSize="18sp" android:padding="10px"
        />

    <TextView
        android:id="@+id/txtShow2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txtShow1"
        android:text="請按此1秒修改文字大小"
        android:textColor="#0000FF"
        android:textSize="18sp"
        android:padding="10px"
        />

</RelativeLayout>

MainActivity.java:

package com.example.user.excontextmenu;

import android.content.Context;
import android.graphics.Color;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;


public class MainActivity extends ActionBarActivity {

    RelativeLayout myLayout;
    TextView txtShow1;
    TextView txtShow2;

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

        myLayout=(RelativeLayout)findViewById(R.id.myLayout);
        txtShow1=(TextView)findViewById(R.id.txtShow1);
        txtShow2=(TextView)findViewById(R.id.txtShow2);

        registerForContextMenu(txtShow1);
        registerForContextMenu(txtShow2);
        }

    protected static final int MENU_BLACKCOLOR = Menu.FIRST ;
    protected static final int MENU_WHITECOLOR = Menu.FIRST +1;
    protected static final int MENU_SMALLSIZE = Menu.FIRST +2;
    protected static final int MENU_LARGESIZE = Menu.FIRST +3;

    public void onCreateContextMenu(ContextMenu menu,View v,
                                    ContextMenu.ContextMenuInfo menuInfo)
    {
        super.onCreateContextMenu(menu,v,menuInfo);

        if(v==txtShow1)
        {
            menu.add(0,MENU_BLACKCOLOR,1,"黑色背景顏色");
            menu.add(0,MENU_WHITECOLOR,2,"白色背景顏色");
        }
        else if(v==txtShow2)
        {
            menu.add(0,MENU_SMALLSIZE,1,"較小字體");
            menu.add(0,MENU_LARGESIZE,2,"較大字體");
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId())
        {
            case MENU_BLACKCOLOR:
                myLayout.setBackgroundColor(Color.BLACK);
                break;
            case MENU_WHITECOLOR:
                myLayout.setBackgroundColor(Color.WHITE);
                break;
            case MENU_SMALLSIZE:
                txtShow1.setTextSize(12);
                txtShow2.setTextSize(12);
                break;
            case MENU_LARGESIZE:
                txtShow1.setTextSize(22);
                txtShow2.setTextSize(22);
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
muska1116 | 收聽TA | 只看該作者
發表於 2015-8-12 20:12
樓主不知道解決這個問題了沒,小弟來獻醜一下,其實沒辦法執行是因為調用錯方法了,
既然使用了 onCreateContextMenu 來增加 item,就用 onContextItemSelected 來監聽按下的選項吧,
原本的判斷不要寫在 onOptionsItemSelected 裡面,把程式碼改一下就可以正常執行了,

    @Override
    public boolean onContextItemSelected(MenuItem item) {

        Log.e("log_item_getItemId", item.getItemId() + "");

        switch (item.getItemId()) {
            case MENU_BLACKCOLOR:
                myLayout.setBackgroundColor(Color.BLACK);
                break;
            case MENU_WHITECOLOR:
                myLayout.setBackgroundColor(Color.WHITE);
                break;
            case MENU_SMALLSIZE:
                txtShow1.setTextSize(12);
                txtShow2.setTextSize(12);
                break;
            case MENU_LARGESIZE:
                txtShow1.setTextSize(22);
                txtShow2.setTextSize(22);
                break;

        }
        return super.onContextItemSelected(item);

    }
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則