Settings-해결된 버그 요약xuquiu

35859 단어 BUG 해결
1:A1 휴대폰 프로젝트 중
Location 위치 정보 -> Mode 모드 -> 가속 위치 지정
BUG 설명: 이전에 이 버튼을 누르면 제3자의 인터페이스 대화상자가 뜨고 고통 코드가 뜨는데 우리는 볼 수 없다. 그 링크 주소를 선택하면 이 핸드폰에 브라우저가 설치되어 있지 않기 때문에 프로그램이 붕괴된다.
지식 포인트:
interface IXTSrv
{
    boolean disable();
    boolean getStatus();
    String  getText(int which);
    void showDialog();
    void registerCallback(IXTSrvCb cb);
    void unregisterCallback(IXTSrvCb cb);
}
         ,                ,                   ,              ,         。
  aidl     :mXTService = IXTSrv.Stub.asInterface((IBinder)service);   
     :   remove();  preference
  BUG  :                ,                 ,            ,      ,           ,             ,     ,           。         
           BootCompletedReceiver     。           bindService    ,        ,            ,  LocationMode         
 	mServiceConn = new XTServiceConnection();
        Intent i = new Intent(IXTSrv.class.getName());
        izatConnResult = getActivity().bindService(i, mServiceConn, Context.BIND_AUTO_CREATE); i new        。
 private class XTServiceConnection implements ServiceConnection{
        @Override
        public void onServiceConnected(ComponentName name, IBinder service){
            mXTService = IXTSrv.Stub.asInterface((IBinder)service);     
		mXTService.disable();//     

          }        @Override        public void onServiceDisconnected(ComponentName name){               }
	  mXTService.disable();           false。  locationMode       chek       false            。


  :   bug    ,location->mode      ,               。
   bug  :     :      ,                 ,    ,           ,   。
  :mIZat        ,             ,    
if(null != mIZat){
            mIZat.setOnPreferenceChangeListener(
                new Preference.OnPreferenceChangeListener(){
                    public boolean onPreferenceChange(Preference preference, Object newValue){
                        final boolean chooseValue = (Boolean) newValue;
                        if(chooseValue){
                            try{
                                if(null != mXTService){
                                    mXTService.showDialog();
                                    }
                                }catch(RemoteException e){
                                    e.printStackTrace();
                                }
                        }else{
                            try{
								
                                if(null != mXTService){
                                    mXTService.disable();
                                }
                            }catch(RemoteException e){
                                e.printStackTrace();
                            }
                        }
                        return true;
                    }
                }
            );
        。
        mIZat.setChecked(mXTService.getStatus());
   bug  :                      
 : R1  settings                 
BUG:           2    ,     
CreateShortcut            activity,       onQueryPackageManager    , manist  SHORTCUT     activity    ,     list 
else if(info.activityInfo.name.endsWith(AccessibilitySettingsActivity.class.getSimpleName())){
				activities.remove(i);
				}
           ,  import com.android.settings.Settings.DreamSettingsActivity;        。
 : A1  Settings      actionBar    
    :         xml       
     include,    。  ,                     
       ,                     。    。
 : A1  Settings  raderWheel    
BUG:        ,    ,        。    ,     ,              ,            。
 linearLayout        editor.putString("RadgerWheel_Connect_Address_old", "null");   ,    !   ,      , sharedpreferences    ,    
 
  
 
  
 
   
  

五:是A1手机Settings里面raderWheel的设备和手机连接之后,点下去设备但是不按上来,点下去之后我关闭蓝牙开关或者退出连接。

BUG:就是按关机键会一直出来呼叫那个界面,意思就是按下了,上来键没执行,所以一直是呼叫状态。

解决方法:

ptt_key_ = characteristic.getIntValue(format, 0);接受设备按键数据是0或者1

if (ptt_key_ == 1) {if (DBG) Log.d(TAG,"CODA BT_PTT_Msg === Pressed");intent.putExtra("event_action", KeyEvent.ACTION_DOWN);} else if (ptt_key_ == 0) {if (DBG) Log.d(TAG,"CODA BT_PTT_Msg === Released");intent.putExtra("event_action", KeyEvent.ACTION_UP);}sendBroadcast(intent);

打完log之后可以看到,广播少发了一条上键的消息,所以要加发一条,分别在:

else if(action.equals("BluetoothDisconnect")){if(ptt_key_==1){Intent intent2 = new Intent("com.android.bluetooth.support.BTPTTKey");if (DBG) Log.v("lwn","zoul up");intent2.putExtra("event_action", KeyEvent.ACTION_UP);sendBroadcast(intent2);}

---------------------------------------------设备断开连接

else if(action.equals("BluetoothSwitchOff")){if(ptt_key_==1){Intent intent2 = new Intent("com.android.bluetooth.support.BTPTTKey");if (DBG) Log.v("lwn","zoul up");intent2.putExtra("event_action", KeyEvent.ACTION_UP);sendBroadcast(intent2);}

--------------------------------------------关闭蓝牙开关

六:是A1手机Settings里面raderWheel的设备和手机连接之后,关闭设备,关机开机之后显示的还是连接的设备,其实我的设备已经关闭了。

原因:开机之后后台跑的服务,条件是"RadgerWheel_Connect_Address_old"这个地址不为null就连接了。

解决:因为连接上之后,一旦手机断开,或者设备断开,这个时候的RadgerWheel_Connect_Address这个字符串全都应该值为null。

if(! (sharedpreferences.getString("RadgerWheel_Connect_Address_old","null")).equals("null")){editor.putString("RadgerWheel_Connect_Address","null");//[liuweinan2015-5-11add]editor.commit();//[liuweinan2015-5-11add]mHandler.sendEmptyMessage(0); }

----------------------------------------------------还应该在设备关闭那个地方也加上将当前地址值为null

七:是A1手机Settings里面DataUsageSummary数据流量的问题。

BUG:插上手机卡之后,会显示选择框,紧接着是流量使用周期,旁边是spinner。现在就是进来之后,按下键,会跑到第一个checkBox,再按2次下键才能到了spinner控件上。客户只想按一次。

知识点:当listView需要添加headView的时候,可以通过这个addHeaderView(mHeader, null, false);方法进行添加,如果header不想被选中可以设为false,想被选就设为true

解决方法:因为每个条目都是listView,给每个条目用inflate转化添加

mHeader = (ViewGroup) inflater.inflate(R.layout.data_usage_header, mListView, false);

mListView.addHeaderView(new View(context), null, false);这个是填空的view,将true改为false

        mListView.addHeaderView(mHeader, null, false);将mheader添加上去将,true改为false

新的BUG:虽然可以实现点一次就可以了,但是新的问题,点了spinner会直接到了下面的listView,自己失去焦点了。而且会刷新2秒

解决方法:注销沉睡的2S, mListView.addHeaderView(mHeader, null, true);这个listView的可以点击。

八:是A1手机Settings里面DataUsageSummary数据流量的问题。

BUG:插上卡,点击spinner控件到最下面,选择日期时间控件,当点到31天的时候就不能动了。

解决方法:在framework下面那个控件的点击事件那个条件多加了个括号

九:A1手机Settings里面-->安全-->应用操作-->点击摸一个会弹出一个新的界面

BUG:就是spinner下面换成英文的时候就不齐了,看不全

解决方法:将这个布局写死了,按权重比写死的

十:换logo图标

BUG:正常的换了图片了,但是编译出来还没有变

知识点:

drable下面的mipmap下:h开头的是手机分辨率480-800,l开头的是240*320,m开头的是320*480,用m了。

解决方法:知道那个文件的layout目录下执行一下命令。先到manifest文件下,看看,icon在哪放的,一般是mipmap下面,知道改了就好。

touch *主要是这句话

ls-la查看文件修改的时间。可以看到是否修改了。

十一:马上回学校了来了四个BUG一一解决

BUG:移动4G卡在更多->移动网络->首选网络模型->只选GSM。设置->流量试用情况->spinner->弹出的对话框控件,选中摸一个日期,修改了,但是没有保存的方法

知识点:cycleDayPicker.clearFocus();                           final int cycleDay = cycleDayPicker.getValue();                           final String cycleTimezone = new Time().timezone;                           editor.setPolicyCycleDay(template, cycleDay, cycleTimezone);                           target.updatePolicy(true);onDismiss(getDialog());上面的这些方法,就是改变了值后做的操作。

解决方法:加了个Button按钮。来保存,模仿返回键的操作。

十二:学校归来上班

BUG:R2手机的Radgel wheel的BUG:连接设备(一切正常连接了)-->关机(设备因为搜索不到就自动休眠了,等到开机)-->开机后进入手机查询搜索不到,唤醒设备-->显示查出设备来但是没连接,正常的来说是直接进来就是连接了,设备也是绿色的闪亮就证明是连接状态。

流程:在界面进入之后要查询:做俩件事1:判断有旧的地址,然后就发送广播过去后台服务,将设备真正连接。2:将名字改了显示成连接状态(跟第一步关联)。3:还遇到个问题,是进来之后显示了连接的设备名字,又显示了个同样设备的没有连接状态的名字信息,这时候就加个条件判断就可以了。

知识点:String address_old_=sharedpreferences.getString("RadgerWheel_Connect_Address_old","null");if(address_old_.equals(device.getAddress())){final Intent iintent = new Intent("BluetoothConnect");Bundle bundle = new Bundle();bundle.putParcelable("BlutoothDevice", device);iintent.putExtras(bundle);sendBroadcast(iintent);}

下面是刷新适配器

----------------------------------------------------------------------

if(address_old_.equals(device.getAddress()))如果是旧的地址跟新地址一样就删了                   {                   mLeDeviceListAdapter.deleteDevice(device);mLeDeviceListAdapter.notifyDataSetChanged();                   }

总结:还有一个问题是出现了unknown的这个东西,也是个BUG。原来保存那俩mac_adress是在后台服务那边做的,真正的连接也是在后台连接的。

十三:BUG

BUG:internet浏览器上点击退出,应该是韩文,结果是英文,需要将中文修改为韩文。不能编译还是该文件的那有问题,没改对,比如注释的问题。,完了要用浏览器浏览一遍,才知道哪有错误。浏览器能看清楚,反正以后就是用比较工具来修改xml文件,要步编译不过,不过的解决办法就是回退,重新修改,不要加注释。如果遇到目录文件里面没有的情况,肯定是跳转到别的应用里面了,这个时候就查是跳到哪个应用了,然后进去进行修改。

流程:packages/apps/browser/res/valuse/---英文目录

packages/apps/browser/res/valuse-zh/---中文目录,直接修改,最后比较一下。

packages/apps/browser/res/valuse-ko/---韩文目录,修改韩文用比较工具修改

只需要将对应的内容改了,提交bug也是需要touch*

知识点:解决了设置完字之后改变字

步骤:1:\\192.168.119.111\liuweinan\L7-R1\android\packages\apps\Settings\res\values英文目录下找到对应的英文

strings

wake up

array

Screen key /PTT  key syn key

\\192.168.119.111\liuweinan\L7-R1\android\packages\apps\Settings\res\values-zh-rCN这个目录下改成

strings

唤醒

array

Screen/PTT键 任意键

步骤:2:进入对应的values目录执行touch *

十四:BUG

BUG:datausage流量设置那出来wifi的按下键不能在list上。

流程:mListView.addHeaderView(new View(context), null, false);//[liuwienan2015-7-8update] -[true]        mListView.addHeaderView(mHeader, null, false);没法说

十五:BUG

BUG:baterry电池耗时和下面的移动网络信号之间的距离有点小,设置了大字体显示不全。

解决:分析一遍BatteryHistoryChart extends View流程知道那个布局是画出来的没法改,拉大距离高度变为原来的3倍onSizeChanged->mLevelOffset = mPhoneSignalOffset + (mHavePhoneSignal ? barOffset : 0)                    + ((mLineWidth*3)/*/2*/);

十六:BUG

BUG:Settings的桌面小部件问题,Settings中的AccessibilitySettings是新的界面,但是从桌面启动进入后还是原来的界面,不是新的界面。

解决:CreateShortcut这个类就是桌面小组件的Settings,会将filtter中有SHORTCUT的都过滤出来,所以显示出来的就是过滤后的几个header。当点击其中的一项会执行onListItemClick走setResult(RESULT_OK, intent);finish();也就是相当于点完直接退出,改变Settings的名字。当这个时候再次点击就是跳转到名字对应的界面了,实质是这样的:manifest中name="Settings$AccessibilitySettingsActivity"这个就是启动的假activity是Settings的一个类,里面的内容是空,启动它相当于还是启动Settings, public static class StorageUseActivity extends Settings { /* empty */ }固定写法。

android:name="com.android.settings.FRAGMENT_CLASS"                android:value="com.android.settings.AccessibilityTouchSettings" />这个才是真实的启动包名.类名。

流程就是这样。

改的地方:value换成你要启动的包名和类名。这个时候程序会报错。java.lang.IllegalArgumentException: Invalid fragment for this activity:这个错误。

个人总结:

应该说,这种修复方式,只是起到一个提醒的作用,最终的安全还是交由开发者承担。另外,目前很多应用都是基于2.X的,所以要兼容在4.4上跑而不crash,只要在PreferenceActivity的子类都补充加上isValidFragment方法就可以了。但对于4.4之前的版,如果存在这种权限泄露的问题,还是需要单独处理的。下面给出兼容2.X~4.4修复的代码示例:

[java]  view plain copy
  1. public final class MyPreferenceActivity extends PreferenceActivity {  
  2.       
  3.     private boolean doValidcheck(String fragmentName) throws IllegalArgumentException{  
  4.         //TODO 做合法性检查  
  5.           
  6.         return true;  
  7.     }  
  8.       
  9.     //添加上这个方法,以使2.x~4.3的代码在4.4上可以正常运行  
  10.     protected boolean isValidFragment(String fragmentName) {  
  11.         return doValidcheck(fragmentName);  
  12.     }  
  13.       
  14.     @Override  
  15.     protected void onCreate(Bundle savedInstanceState) {  
  16.         //在onCreate前就做合法性判断  
  17.         String fragmentname = getIntent().getStringExtra(":android:show_fragment");  
  18.         doValidcheck(fragmentname);  
  19.   
  20.         super.onCreate(savedInstanceState);  
  21.     }  
  22. }  

十六:BUG

BUG:Settings的radger的bug,当设备连接好了之后关机设备自动休眠,开机之后正常的话是开机了蓝牙开了之后点击唤醒设备会自动连接,但是这时候却不能连接。

复线之后打出的LOG:显示后台服务BluetoothCODAService中的BluetoothAdapter.isEnabled()是false,也就是。通过查询BluetoothAdapter中的isEnable方法中打LOG发现:正常的流程是开机服务启动,发送handle消息,如果BluetoothAdapter.isEnabled()是true,才开始查询,自动连接旧的设备,但是现在返回的是false,也就是那个有问题,分析LOG得出,蓝牙没开,enable是false,这个时间段之中就发消息来查询设备,肯定是false,解决这个问题就是,等蓝牙设备完全开启之后再发送消息查询设备自动连接。

注意:上面的复线只是偶尔会出现那种情况。正常情况还是正常发送消息,这个只不过是做个修复的代码。提前抓取状态。很重要。又加了个如果加上后只要蓝牙,开或者关,都是先走

BluetoothAdapter.ACTION_STATE_CHANGED  ,    2 ,      true-false     。

해결:intentfilter 등록
IntentFilter mIntentFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
			registerReceiver(mReceiver, mIntentFilter);

그것의 동작을 받아들이다
BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

			action = intent.getAction();
if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
                switch (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR)) {
                    case BluetoothAdapter.STATE_ON:
                        mHandler.sendEmptyMessage(0); 
                        break;
                    default:
                        break;
                }
            }

아담터가 켜진 후에야 메시지 조회 장치를 보낼 수 있습니다.
지식: 예를 들어 이쪽 방송 수신자가 동작을 수신하려면 동작을 등록해 주고 수신한 동작이 이 등록된 것과 같으면 키를 실행한다.
17:BUG
BUG:Settings의radger의bug,홈 키를 길게 눌러서 현재 프로세스를 제거하면 장치가 자동으로 연결을 끊지만 연결을 표시합니다.settings를 죽일 때 대응하는 코드서비스와 함께 죽였기 때문입니다.
문제 해결: xml 파일을 등록할 때 시스템 프로세스에 지정합니다. 이렇게 하면 죽이는 것은 그것이 아닙니다. 같은 인터페이스도 같은 프로세스에 넣어야 합니다.
android:process="system"
한동안 블루투스의 전체 과정을 분석했다.후속 쓰기
한동안 아래 버그의 프로세스를 분석하고 정음의 프로세스를 설정하며 후속으로 썼습니다.
18:BUG
BUG:setting->sound->volume->ringtone ¬ifications의 버그는 왼쪽 단추를 누르면 진도표 밑까지 진동이 되고 수요는 다시 누르면 정음이 된다. 바깥의 옆 키를 끝까지 누르면 정음이 되기 때문이다. 물론 양자의 원리는 다르다.후속 분석 프로세스
문제 해결:volume의 이 인터페이스 클래스인RingerVolumePreference에서 두 번째seekBar에서 수정합니다.
대체적인 사고방식: 내가 왼쪽 버튼을 가장 낮게 눌렀을 때 진동 모드이고 왼쪽을 눌렀을 때 들어온다. 만약에 진도표가 0&&모드가 진동이라면 현재의 모드를 정음으로 설정한다.같은 이치로 오른쪽에 있을 때 진도조가 0&&&모드가 정음이면 현재의 모드를 진동으로 설정합니다.수동으로 호출합니다. 프레임워크로 가면 안 되기 때문입니다.
if (isdown) {
	if (mSeekBars[1].getProgress() == 0 && ringMode==AudioManager.RINGER_MODE_VIBRATE){
		ringMode=AudioManager.RINGER_MODE_SILENT;
		mAudioManager.setRingerMode(ringMode);
		}
		else{	
		mSeekBarVolumizer[1].changeVolumeBy(-1);
		}
	}
if (isdown) {
	if (mSeekBars[1].getProgress() == 0 && ringMode==AudioManager.RINGER_MODE_SILENT){
		ringMode=AudioManager.RINGER_MODE_VIBRATE;
		mAudioManager.setRingerMode(ringMode);
		}
		else{
		mSeekBarVolumizer[1].changeVolumeBy(1);
		}
		 }

19:BUG
BUG: 예를 들어 핸드폰에 Setiings 앱이 있는데 핸드폰에 표시하고 싶지 않아요.
지식점: mk 파일을 찾아서 서버에 있습니다.
먼저 네가 찾는 응용 프로그램의 디렉터리에 들어가라.
(1) cd 디렉토리
(2)vi  Android.엠케이가 나와요. 로컬...PACKAGE_NAME: = Email 이 물건입니다. Email은 바로 우리가 아래에서 검색해야 하는 것입니다.
(3)android 디렉터리로 되돌아가서 Email을 검색합니다.
(4)find . -type f - name * .mk | xargs grep -rn 응용 프로그램 이름
모든 것을 보여 줍니다. 보통build/target/product를 찾으면 device/qcom/common과 함께 보십시오.
방법: 디렉토리 파일./device/qcom/common/common.mk 및./build/target/product/generic_no_telephony.mk: 에서 Settings 에 해당하는 mk 파일을 로그아웃합니다.
예를 들면 다음과 같습니다.
PRODUCT_PACKAGES :=\
    
    rsota_sys \
    rsota_ui \
#    VoiceDialer
#    Camera \
#    Email \
 反斜杠是换行符,上面那2个表示在一行。下面那三个也是再一行。 
   
  

现在注销lwn

PRODUCT_PACKAGES := \
    
    rsota_sys \
    rsota_ui 

#    VoiceDialer\

4
#    lwn\
#    Camera \
#    Email \
lwn이라는 필드와 아래의 #주석문이 한 줄에 모두 주석되어 있음을 나타낸다.
그중의 하나의camera를 놓으면...
PRODUCT_PACKAGES := \
    
    rsota_sys \
    rsota_ui \
Camera 

# VoiceDialer\
# Email\
이렇게 핸드폰을 켜고 네가 원하는 앱을 켰어.
검증 방식: 시스템 아래에서 이메일 apk를 삭제해야 합니다. 컴파일해서 또 나오는지,
20:BUGBU:1: 작은 것을 추가합니다. Settings 설정에 -->글꼴 크기를 표시합니다. 원래 3개가 있었는데, 작은 것, 중간 것, 큰 것, 지금은 다시 분배해야 합니다.4개가 되지만 가장 큰 값은 바꿀 수 없습니다. 너무 커지면 UI를 놓을 수 없기 때문에 최대치가 고정된 상태에서 4개를 수정하고 다시 분배할 수 있습니다.
packages\apps\Settings\res\xml\displaysetting.xml에서 찾을 수 있습니다:android:key="font size"android:title="@string/title font size"android:summary= "@string/summary font size"android:entries = "@array/entries font size"는 대화상자에 대응하는 것이 정상, 크고,초대형android:entryValues="@array/entryvalues font size"는 각 속성의 값 1.0|1.15|1.3 android:dialogTitle="@string/dialog title font size"
디렉토리 추가
android\packages\apps\Settings\res\values\arrays.xml 대응하는 것 찾기
추가 내용:
    Small         Normal         Large         Huge    
값을 수정하려면 다음과 같이 하십시오.
0.85         1.0         1.15         1.30    
대응하는 한국어와 중국어를 수정하려면 아래에 모두 필드를 추가하십시오.
BUG2: 기본 글꼴 크기 수정
방법1:
frameworks/base/core/java/android/content/res/Configuration.java 파일의 public void setToDefaults () {fontScale = 1.0; 이것을 수정하지만 이 값은 위의 1.0 | 1.15 | 1.30과 일치해야 합니다. mcc = mnc = 0; locale = null; userSetLocale = false; touchscreen = TOUCHSCREEN UNDEFINED;...
방법2:
기본 글꼴 크기를 속성으로 제어하면 수정이 훨씬 편리합니다.(1)frameworks/base/core/java/android/content/res/Configuration.java:import android.os.Build;public void setToDefaults() {String scale = Build.DEFAULT_FONTSCALE;if ( scale.equalsIgnoreCase( Build.UNKNOWN ) == false ){fontScale = Float.valueOf( Build.DEFAULT_FONTSCALE ).floatValue();}else{fontScale = 1.0f;}(2)frameworks\base\core\java\android\os\Build.java        /**a property to set fontScale */public static final String DEFAULT_FONTSCALE = getString("ro.property.fontScale");(3) 시스템 속성에서 기본 글꼴 크기를 설정할 수 있습니다.
20: 수요
android\vendor\qcom\proprietary\bns 폴더 아래 apk 업데이트/수정
문제1: 만약 이름이 모두 같다면 내가 직접 덮어쓰면 돼. 번역할 때 바로dd.
문제2: APK 이름이 다르면 새 APK를 넣습니다.또한\android\vendor\qcom\proprietary\bns 디렉토리의 mk 파일과android\device\qcom\msm8226에 해당하는 apk 파일에 새 이름을 추가합니다.컴파일해야 되니까.
문제3: 제출이 성공하지 못했습니다. 누군가가 이 디렉터리에 있는 파일을 수정했기 때문에git pull 코드를 당기고 되돌아갑니다.더욱 제출한다
BUG: 원래 APK를 넣었으면 이름이 바뀌었을 뿐이에요.
방식1: 직접 넣고 원래 삭제,git rm 경로.지금의 이름을 원래대로 바꾸다.git add에서 식별이 돼서 이름이 바뀌었어요.
방식2: 원래, 새로운 것을 삭제하고\android\vendor\qcom\proprietary\bns 아래에서 원래의 apk 파일 이름을 찾아서 현재로 변경합니다.android\device\qcom\msm8226 아래의 mk 파일도 변경되었습니다.이 목록들을 어떻게 알았지?find로.-type f - name * .mk | xargs grep -rn의 응용 프로그램 이름
21: 수요Settings인터페이스: 1급 메뉴에 들어가서 로그를 걷고 2급 메뉴에 들어가면 얘기하지 않고 2급에서 되돌아와서 다시 칩니다.
(1) 바깥쪽에 표지판privateboolean biaozhi를 붙인다.기본값을 주지 않으면false
(2) onbuild ()에서 값biaozhi=true를 준다.이것은 옳지 않다. 왜냐하면 원생 안드로이드 시스템 코드에서 LOg을 해서 도대체 어떤 방법이 한 번만 갔는지 살펴보기 때문이다.원본은 onCreate 중 (2) 은 onResume () 안에 있습니다.
if(biaozhi){ biaozhi=false;
Log.v("lwn","guangbo");}
(3) 이벤트 온헤드클릭()에서 클릭
super.onHeaderClick(header, position);부류의 길을 다 걷다
biaozhi=true; 왜 이렇게 하는지 실현할 수 있다. 왜냐하면 Settings와 같은 구조가 복잡하기 때문이다. 2급 메뉴는 모두 Settings의 하위 클래스이고 2급 메뉴에 들어가면 Settings와 같은 종류를 다시 걷는다.
스물둘: 삼자 응용 인터페이스
보고 싶은 사신 ㅋㅋ
23: 새로 추가된 SHP 블루투스 장치
보고 싶은 사신 ㅋㅋ

좋은 웹페이지 즐겨찾기