barriers / 阅读 / 详情

PreferenceFragment去完成设置页面

2023-07-17 11:49:56
共1条回复
我不懂运营
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!

大多数时候我们都是这样去使用SharedPreferences

在app设置页面的开发中也会用到对设置项的保存,我们也会用到SharedPreferences去保存这些设置项,Android官方提供了更为简单针对设置页面使用SharedPreferences方法,那就是PreferenceActivity和PreferenceFragment. 下面来说下如何使用.

PreferenceActivity主要针对3.0以前的版本,PreferenceFragment则更为灵活,其实使用方法上面两者大致一样,所以PreferenceActivity就不展开讲解,直接来看PreferenceFragment的使用

一般来说Fragment会要求去关联一个布局的layout, 但是在PreferenceFragment则不需要这样做,我们需要去自定义一个xml加入首选项(首选项就是配置项,官方称为首选项). xml根节点必须是一个PreferenceScreen元素. PreferenceScreen里面的子项都作为一个独立的控件显示在界面里,同时还具备保存属性.

显示效果如下

以上只展示了CheckBoxPreference和ListPreference,还有其它很多Preference控件,具体可以查阅官方文档有关Preference的字类.

如果设置项目过多,我们可以进行分类展示,有如下两种方式可以来实现.

加入PreferenceCategory的属性可以进行标题的划分.

使用PreferenceCategory属性可以划分子屏幕

有时候我们的设置项目并不是保存一个配置项,而是去跳转到一个新的画面. 我们可以使用如下配置来使得首选项跳转一个网页

当然你也可以配置显式的intent进行跳转,具体可以参见官方文档.

可以设置默认值给Preference控件

在进入设置页面可以调用

对默认值进行初始化应用, 这个接口最常用的地方就是去恢复设置.

通常还有种需求是点击一个首选项跳转到另外一个屏幕,当然这个功能也可以通过PreferenceScreen来完成,但是使用PreferenceScreen不能兼容平板的情况就像下面这样

如果要实现这种效果就要使用到hearders

android:fragment用来标记点击后跳转的Fragment,extra用来传递参数,可以在Fragment中通过getArguments()来获取传递过来的bundle数据, 这个数据最大的作用就是用来在同一个preference fragment中加载不同的preference xml.

如果要显示这个标头文件的内容需要去重写onBuildHeaders方法.

preference-headers这个标签只能支持3.0以后的版本,如果要兼容3.0以前的版本需要另外在写个xml作为兼容

再以如下方式加载

onBuildHeaders这个回调只会在Build.VERSION_CODES.HONEYCOMB(3.0系统)以上的版本调用。

另外我们必须要注意的一点,目前首选项不会再您调用registerOnSharedPreferenceChangeListener()时存储对监听器的强引用。但是,您必须存储对监听器的强引用,否则它将很容易被当作垃圾回收。

上面就是关于如何使用系统提供具有Preference功能的UI控件来打造一个设置界面. 更多详细关于自定义Preference等可以参考官方文档 https://developer.a*****.com/guide/topics/ui/settings

相关推荐

怎么样得到引用的类属于那一个JAR包中的

一般根据引用的包名去查找 。。。。。。。。。。。。
2023-07-17 11:31:311

Android蓝牙协议-蓝牙配对与连接

蓝牙设备在连接前,会先检查设备是否已经配对过,如果没有则先配对,配对完成后,再开始连接。 蓝牙连接开始于设备列表 DeviceListPreferenceFragment的onPreferenceTreeClick方法。 DeviceListPreferenceFragment是蓝牙设备列表,点击其中一个蓝牙设备,开始蓝牙的连接过程。 调用onDevicePreferenceClick方法,接着调用BluetoothDevicePreference的onClicked方法,开始连接,以及连接前的状态检测。 获取mCachedDevice的绑定状态, pair方法会调用CachedBluetoothDevice.startPairing,启动配对 createBond调用BluetoothDevice.createBond方法,BluetoothDevice.createBond接着调用IBluetooth.createBond方法,下面会调用蓝牙远程服务。 和蓝牙扫描一样,实现IBluetooth接口的类是AdapterServiceBinder, AdapterServiceBinder实现IBluetooth.Stub接口,并且是AdapterService的私有内部类, AdapterServiceBinder接受事件,都会转交AdapterService处理 ,所以IBluetooth.createBond方法会调用AdapterService.createBond方法。 createBond方法会检查一下远程设备属性信息,再次取消蓝牙扫描任务,将配对任务转交mBondStateMachine,由状态机处理该信息。 BondStateMachine状态机的初始状态是StableState,所以BondStateMachine.CREATE_BOND由StableState处理,StableState在processMessage中调用BondStateMachine.createBond方法 createBondNative方法实现com_android_bluetooth_btservice_AdapterService.cpp中
2023-07-17 11:32:081

如何在Fragment中使用PreferenceFragment

public FragmentSetup() { // Required empty public constructor}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_setup, container, false);}@Overridepublic void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); // Load the preferences from an XML resource
2023-07-17 11:32:201

如何查阅这个东西:preferencefragment。我不要解释,我只要怎么能查出来,它是android3.0后加上的。

方法一:将这个源码jar文件导入到eclipse项目,ctrl+鼠标点击,就能看到这个类的说明了。另一种方法是打开3.0以上的Android API文档选择Reference---往下拉找到android.preference
2023-07-17 11:32:281

android PreferenceFragment 切换语言crash

切换语言时fragment初始化失败,之前遇到过这个BUG。应该是fragment内容已经被释放,但是activity里面的fragment对象还存在。所以你再初始化的时候要判断一下Fragment的内容是否正常。isDetached()这个函数 好像。。记不太清了
2023-07-17 11:32:351

如何在fragment中使用preferencefragment

public FragmentSetup() { // Required empty public constructor}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_setup, container, false);}@Overridepublic void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); // Load the preferences from an XML resource}
2023-07-17 11:32:421

怎样实现从一个frgment跳转到另一个preferencefragment

不行的,fragment是基于activity的,我用了后的理解是,它就像是相当于activity布局中的一个View,一个activity可以有多个View(fragment)。你要实现用intent的跳转,必须是要通过activity跳activity的,new Intent的时候,里面两个参数很明确的,一个是第一个参数是Context,fragemnt显然不行。
2023-07-17 11:32:491

在fragment怎么用getlayoutinflater

用了一个FragmentActivity作为主界面,包含了三个Fragment,实现了一个滑动的效果。现在我想讲其中一个Fragment,作为一个设置的界面,所以我想使用PreferenceFragment来实现。如下代码:一、FragmentActivity代码:Java code?package huahua.viewpager;import java.util.ArrayList;import android.os.Bundle;import android.preference.PreferenceFragment;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.app.FragmentTransaction;import android.support.v4.view.PagerTabStrip;import android.support.v4.view.PagerTitleStrip;import android.support.v4.view.ViewPager;import android.util.Log;public class MainActivity extends FragmentActivity { private ViewPager m_vp; private fragment1 mfragment1; private fragment2 mfragment2; private fragment3 mfragment3; private ArrayList<Fragment> fragmentList;//页面列表 ArrayList<String> titleList = new ArrayList<String>();//标题列表 //通过pagerTabStrip可以设置标题的属性 private PagerTabStrip pagerTabStrip; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.v("huahua", "MainActivity-->onCreate()"); m_vp = (ViewPager)findViewById(R.id.viewpager); pagerTabStrip=(PagerTabStrip) findViewById(R.id.pagertab); mfragment1 = new fragment1(); mfragment2 = new fragment2(); mfragment3 = new fragment3(); fragmentList = new ArrayList<Fragment>(); fragmentList.add(mfragment1); fragmentList.add(mfragment2); fragmentList.add(mfragment3); titleList.add("第一页 "); titleList.add("第二页"); titleList.add("第三页 "); m_vp.setOffscreenPageLimit(0); m_vp.setAdapter(new MyViewPagerAdapter(getSupportFragmentManager())); //设置下划线的颜色 pagerTabStrip.setTabIndicatorColor(getResources().getColor(android.R.color.holo_green_dark)); //设置背景的颜色 pagerTabStrip.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_dark)); } public class MyViewPagerAdapter extends FragmentPagerAdapter{ public MyViewPagerAdapter(FragmentManager fm) { super(fm); // TODO Auto-generated constructor stub } @Override public Fragment getItem(int arg0) { return fragmentList.get(arg0); } @Override public int getCount() { return fragmentList.size(); } @Override public CharSequence getPageTitle(int position) { // TODO Auto-generated method stub return titleList.get(position); } }}这个是其中的一个Fragment,我想在这个Fragment页面上实现PreferenceFragment的效果,但是这样做行不通,Java code?1getActivity().getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefsFragement()).commit();这行代码以及下面的PrefsFragement静态类都是我期望实现的。真的不知道如何解决了。求教各位,万分感激。这个Fragment和PreferenceFragment并不是继承关系,这里的Fragment使用的是android.support.v4.app.Fragment下面的Fragment。Java code?package huahua.viewpager;import android.os.Bundle;import android.preference.PreferenceFragment;import android.support.v4.app.Fragment;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class fragment3 extends Fragment{ private View mMainView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.v("huahua", "fragment3-->onCreate()"); LayoutInflater inflater = getActivity().getLayoutInflater(); mMainView = inflater.inflate(R.layout.fragment3, (ViewGroup)getActivity().findViewById(R.id.viewpager), false); getActivity().getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefsFragement()).commit();//希望添加的 } public static class PrefsFragement extends PreferenceFragment{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.v("huahua", "fragment3-->onCreateView()"); ViewGroup p = (ViewGroup) mMainView.getParent(); if (p != null) { p.removeAllViewsInLayout(); Log.v("huahua", "fragment3-->移除已存在的View"); } return mMainView; }}
2023-07-17 11:32:571

android preferencescreen走哪个intent

  addPreferencesFromResource(R.xml.setting_preference);   因为最近的项目我都要把程序的资源文件都放到另一个apk中。而上面这个方法中只能传本地的或系统的资源id。那么我就找到了类似的方法:addPreferencesFromIntent(Intent intent);百度goolge了一下发现都是没有这个方法的例子只有搜索google的里面的api:   public void addPreferencesFromIntent (Intent intent)   Since: API Level 1   This method is deprecated. This function is not relevant for a modern fragment-based PreferenceActivity.   Adds preferences from activities that match the given Intent.   Parameters   intent   The Intent to query activities.   这样介绍就很简单了,只是让我们去查询activities。没有说明xml是什么给的。没办法我只能去看源码,看他们是什么解析Intent的,那我就给出一个可用的intent。   因为是继承PreferenceFragment的,我就从源码找到frameworks/base/core/java/android/preference/PreferenceFragment.java这个类:   view plaincopy to clipboardprint?   <span style="white-space:pre"> </span>public void addPreferencesFromIntent(Intent intent) { requirePreferenceManager(); setPreferenceScreen(mPreferenceManager.inflateFromIntent(intent, getPreferenceScreen())); }   <span style="white-space:pre"> </span>public void addPreferencesFromIntent(Intent intent) { requirePreferenceManager(); setPreferenceScreen(mPreferenceManager.inflateFromIntent(intent, getPreferenceScreen())); } 然后这里又用到了mPreferenceManager.inflateFromIntentt(intent, getPreferenceScreen()),那么在找到这个类frameworks/base/core/java/android/preference/PreferenceManager.java:   view plaincopy to clipboardprint?   <span style="white-space:pre"> </span>PreferenceScreen inflateFromIntent(Intent queryIntent, PreferenceScreen rootPreferences) { final List<ResolveInfo> activities = queryIntentActivities(queryIntent); final HashSet<String> inflatedRes = new HashSet<String>(); for (int i = activities.size() - 1; i >= 0; i--) { final ActivityInfo activityInfo = activities.get(i).activityInfo; final Bundle metaData = activityInfo.metaData; if ((metaData == null) !metaData.containsKey(METADATA_KEY_PREFERENCES)) { continue; } // Need to concat the package with res ID since the same res ID // can be re-used across contexts final String uniqueResId = activityInfo.packageName + ":" + activityInfo.metaData.getInt(METADATA_KEY_PREFERENCES); if (!inflatedRes.contains(uniqueResId)) { inflatedRes.add(uniqueResId); final Context context; try { context = mContext.createPackageContext(activityInfo.packageName, 0); } catch (NameNotFoundException e) { Log.w(TAG, "Could not create context for " + activityInfo.packageName + ": " + Log.getStackTraceString(e)); continue; } final PreferenceInflater inflater = new PreferenceInflater(context, this); final XmlResourceParser parser = activityInfo.loadXmlMetaData(context .getPackageManager(), METADATA_KEY_PREFERENCES); rootPreferences = (PreferenceScreen) inflater .inflate(parser, rootPreferences, true); parser.close(); } } rootPreferences.onAttachedToHierarchy(this); return rootPreferences; }   <span style="white-space:pre"> </span>PreferenceScreen inflateFromIntent(Intent queryIntent, PreferenceScreen rootPreferences) { final List<ResolveInfo> activities = queryIntentActivities(queryIntent); final HashSet<String> inflatedRes = new HashSet<String>(); for (int i = activities.size() - 1; i >= 0; i--) { final ActivityInfo activityInfo = activities.get(i).activityInfo; final Bundle metaData = activityInfo.metaData; if ((metaData == null) !metaData.containsKey(METADATA_KEY_PREFERENCES)) { continue; } // Need to concat the package with res ID since the same res ID // can be re-used across contexts final String uniqueResId = activityInfo.packageName + ":" + activityInfo.metaData.getInt(METADATA_KEY_PREFERENCES); if (!inflatedRes.contains(uniqueResId)) { inflatedRes.add(uniqueResId); final Context context; try { context = mContext.createPackageContext(activityInfo.packageName, 0); } catch (NameNotFoundException e) { Log.w(TAG, "Could not create context for " + activityInfo.packageName + ": " + Log.getStackTraceString(e)); continue; } final PreferenceInflater inflater = new PreferenceInflater(context, this); final XmlResourceParser parser = activityInfo.loadXmlMetaData(context .getPackageManager(), METADATA_KEY_PREFERENCES); rootPreferences = (PreferenceScreen) inflater .inflate(parser, rootPreferences, true); parser.close(); } } rootPreferences.onAttachedToHierarchy(this); return rootPreferences; } 从上面的代码我们就知道要从intent中获取一组activity。通过 activityInfo.metaData.getInt(METADATA_KEY_PREFERENCES)我们知道就是从activity拿的<meta-data 这些数据,那么我们在AndroidManifest.xml中eclipse提示的<meta-data只有三个属性:   那么我么就不难得出结论<meta-data 中的nane就是METADATA_KEY_PREFERENCES,而xml就是resource。   接下来还有一个问题就是METADATA_KEY_PREFERENCES的值是多少。搜一下在PreferenceManager.java中有如下定义:   view plaincopy to clipboardprint?   public static final String METADATA_KEY_PREFERENCES = "android.preference";   public static final String METADATA_KEY_PREFERENCES = "android.preference"; 知道了以上原理我们来验证一下:   新建一个工程,在里面的activity标签中加<meta-data,如下:   view plaincopy to clipboardprint?   <span style="white-space:pre"> </span><activity android:name="com.winca.style.defaultskin.RadioReadSettingXMLActivity" android:icon="@drawable/radio" android:label="@string/radio_app_name" > <meta-data android:name="android.preference" android:resource="@xml/setting_preference"/> </activity>   <span style="white-space:pre"> </span><activity android:name="com.winca.style.defaultskin.RadioReadSettingXMLActivity" android:icon="@drawable/radio" android:label="@string/radio_app_name" > <meta-data android:name="android.preference" android:resource="@xml/setting_preference"/> </activity> 这个xml就是从我们程序中拷贝多来放到新建的工程中的。   原来我们工程用的addPreferencesFromResource(R.xml.setting_preference);这语句,我们这样替换:   view plaincopy to clipboardprint?   <pre name="code" class="java"><span style="white-space:pre"> </span>Intent xmlIntent = new Intent(); ComponentName component = new ComponentName("com.winca.style.defaultskin","com.winca.style.defaultskin.RadioReadSettingXMLActivity"); xmlIntent.setComponent(component); addPreferencesFromIntent(xmlIntent);   <pre name="code" class="java"><span style="white-space:pre"> </span>Intent xmlIntent = new Intent(); ComponentName component = new ComponentName("com.winca.style.defaultskin","com.winca.style.defaultskin.RadioReadSettingXMLActivity"); xmlIntent.setComponent(component); addPreferencesFromIntent(xmlIntent); 运行一下,正常显示xml里面的。问题解决。
2023-07-17 11:33:051

什么代码能直接屏蔽所有系统通知

如果是手机系统的话,在设置里有通知选项,可以在通知里把你不想要接收的App的通知功能关掉。
2023-07-17 11:33:242

activity和fragment的生命周期状态各有哪些?状态之间如何变换

Fragment的生命周期初探:因为Fragment必须嵌入在Acitivity中使用,所以Fragment的生命周期和它所在的Activity是密切相关的。如果Activity是暂停状态,其中所有的Fragment都是暂停状态;如果Activity是stopped状态,这个Activity中所有的Fragment都不能被启动;如果Activity被销毁,那么它其中的所有Fragment都会被销毁。但是,当Activity在活动状态,可以独立控制Fragment的状态,比如加上或者移除Fragment。当这样进行fragment transaction(转换)的时候,可以把fragment放入Activity的back stack中,这样用户就可以进行返回操作。使用Fragment时,需要继承Fragment或者Fragment的子类(DialogFragment, ListFragment, PreferenceFragment, WebViewFragment),所以Fragment的代码看起来和Activity的类似。每当创建一个Fragment时,首先添加以下三个回调方法:onCreate():系统在创建Fragment的时候调用这个方法,这里应该初始化相关的组件,一些即便是被暂停或者被停止时依然需要保留的东西。 onCreateView():当第一次绘制Fragment的UI时系统调用这个方法,该方法将返回一个View,如果Fragment不提供UI也可以返回null。注意,如果继承自ListFragment,onCreateView()默认的实现会返回一个ListView,所以不用自己实现。 onPause():当用户离开Fragment时第一个调用这个方法,需要提交一些变化,因为用户很可能不再返回来。将Fragment加载到Activity当中有两种方式:方式一:添加Fragment到Activity的布局文件当中 方式二:在Activity的代码中动态添加Fragment(荐)第一种方式虽然简单但灵活性不够。添加Fragment到Activity的布局文件当中,就等同于将Fragment及其视图与activity的视图绑定在一起,且在activity的生命周期过程中,无法切换fragment视图。第二种方式比较复杂,但也是唯一一种可以在运行时控制fragment的方式(加载、移除、替换)。
2023-07-17 11:33:321

android 怎么在自定义控件中获取控件所在fragment的实例

在构造方法,或者set方法等注入fragment,类似很多自定义控件使用Context一样。可以把Fragment想成Activity中的模块,这个模块有自己的布局,有自己的生命周期,单独处理自己的输入,在Activity运行的时候可以加载或者移除Fragment模块。使用Fragment时,需要继承Fragment或者Fragment的子类(DialogFragment, ListFragment, PreferenceFragment, WebViewFragment)。
2023-07-17 11:33:401

andriod的PreferenceFragment类的addPreferencesFromResource不管用

的起薪和平均水平是多少
2023-07-17 11:33:471

Android Support Library解释

tags: android support library Google官方 开发者网站 有一篇文章专门解释了这一系列Support Library,网络上的很多文章都翻译自它。文章地址在 这里 。 下面是我自己的一些总结。 最主要的原因就是: 为了能在低版本的Android系统上使用高版本的SDK才具有的新功能、新特性 。比如,Fragment,ActionBar、Material Design风格等。 Google把这些高版本SDK才具有的新特性打包进Support Library,当开发者想使用这些新特性,又需要兼容老版本Android系统时,就可以引入Support Library。当然,这些打包进Support Library的新特性,全部都被完整的包含在了最新的Android SDK中。所以如果开发者的App仅支持最新系统,也可以不引入Support Library。 Google为了使开发者可以方便的引入Support Library,把它们做成了依赖包的形式,通过Gradle可以很方便的引入,例如: 除了最主要的原因,还有其他几点原因,可以参考Google 官方文档 对此的解释。 Android Support Library只是一个名称,并不是一个真正的library,它由多个具体的library集合而成。每个单独的library都包含一些新特性,可以支持不同版本的Android系统,可以被单独引入。 一般来说,每个Support Library包含的新特性都是不同的,它们交叉互补,以插件化的形式提供对低版本系统的支持。 支持Android 1.6(API level 4)及以上。它包含了最多的新特性,典型的有: 引入: 支持Android 2.1(API level 7)及以上。由一系列独立的v7包组成,可以分别引入。 依赖 v4 Support Library 。现在在Android Studio中新建一个工程,默认就会引入这个library。而它又依赖v4 Support Library,所以v4 Support Library也会被默认引入工程。 这个库主要的作用就是提供对 Action Bar 的支持。 使用: 提供了 CardView 控件,一种Material Design风格的卡片形控件。 使用: 提供了 GridLayout 类,一种网格布局控件,与LinearLayout,RelativeLayout同级。 使用: 官方文档的解释是:用来控制多媒体流的分发。但是实际中基本很少用到,有兴趣的可以参考 官方文档 。 提供了 Palete 类,可以从一张图片中提取出它的主色调。 使用: 提供了 RecyclerView 类,一个类似ListView,但是比ListVIew性能更好的控件。一般用来展示大量数据,可以完全替代ListView。 使用: 提供了一系列API,用于支持创建Material Design风格的首选项页面。官方有一篇 指导文档 ,但是感觉虽然方便了开发,但是灵活性和可定制性不高。 使用: 它是Android官方用来方便开发者在应用中实现 Android Material Design 风格的UI而提供的支持库,里面有很多Android官方提供的Material Design风格的 轮子 。主要的轮子有: Google开发者博客上还有一个 视频 ,专门介绍了这个库。 使用: 提供支持多个dex文件的功能,解决方法65536的限制。 使用: 支持Android 2.2(API level 8)及以上。 感觉一般的应用级开发用不到(也可能是我太弱鸡了),具体还是参考 官方文档 吧。 支持Android 3.2(API level 13)及以上。这个library是为在平板上使用 Fragment 而设计的,现在应该几乎用不到了。 使用: 主要是添加了首选项Fragment类- PreferenceFragment 和首选项接口- PreferenceFragment.OnPreferenceDisplayDialogCallback , PreferenceFragment.OnPreferenceStartFragmentCallback , PreferenceFragment.OnPreferenceStartScreenCallback 。与 v7 Preference Support Library 搭配使用,参见 官方文档 。 使用: 提供对注解的支持。 使用: 提供了一些 API ,用于添加和管理自定义tab。 使用: 添加了百分比布局控件,如 PercentFrameLayout , PercentRelativeLayout 。 使用: 提供了在电视平台上,构建首选项页面的接口,作用类似于 v7 Preference Support Library 与 v14 Preference Support Library 。 使用: 提供了在电视平台上,用于构建用户界面的一系列重要控件。以下是一些关键的类: 使用: 在电视平台上,添加了用于做内容推荐的一系列 API 。 使用:
2023-07-17 11:33:541

什么是英文常用单词?

最常用英语单词有accent 加重、accurate 精确、acquire 获得、action 操作,运算、adjust 调整、ambient light 环境光、angle 角度、anti-aliased 平滑处理 arbitrary 任意的等。1常用英语单词1000Aaccent 加重accurate 精确acquire 获得action 操作,运算adjust 调整ambient light 环境光angle 角度anti-aliased 平滑处理arbitrary 任意的arrange 排列arrow 箭头artistic 艺术的,美术的Bbalance 平衡bar 条,栏base 基准batch 批量,成批bevel 使成斜角,斜切bilinear 双线性插值bitmap 位图,点阵图blend 混合,调和blur 模糊bold 加粗border 边界,边框brightness 亮度brush 画笔,笔形build 建造,创立burn 焦化,烧黑button 按钮Ccache 快速存储器calculation 计算calibrate 校准,校验canvas 画布carve 镌刻cascade 层叠chalk 粉笔,作记号channel 通道,频道charcoal 炭笔画chrome 铬黄,铬合金classic 经典的click (单)击(鼠标)clipboard 剪贴版clone 复制cloud 云彩command 命令content 内容continue 连续的,持续的contour 轮廓线,周线contract 收缩,缩小contrast 反差,对比coordinate 协调,协作craquelue 裂纹crayon 蜡笔crop 剪裁crystallize 水晶curl 螺旋状物,卷曲的current 当前的cursor 光标,游标curve 曲线custom 自定义Ddarken 较黑的,使变黑daubs 涂抹define 定义design 设计destination 目标,对象difference 区别,差异diffuse 散乱扩散displace 转移distort 扭曲document 文档,文件dodge 加亮drop shadow 投影duotone 双色调duplicate 复制dust 灰尘,尘土Eedge 边界effect 效果作用embed 嵌入emboss 浮雕enlarge 放大equalize 平均化expand 扩充,扩展export 输出extrude 突出eyedropper 吸管Ffacet 刻面feather 晕开,羽化fill 填充flare 张开,闪耀flatten 变平flip 翻转fragment 碎片fresco 壁画Ggamut 整个领域general 普通的glass 玻璃杯glow 发光gradient 渐变grain 纹理graphics 图形grayscale 灰阶,灰度图grid 坐标格子group 群,组grow 成长guide 参考,参考线Hhalftone 半色调histogram 柱状图horizontal 水平hue 色相Iicon 图标image 图像import 输入index 索引Inner 内部的input 输入intensity 亮度inverse 相反invert 反转,反相Kkeyboard 键盘kilometre 千米,公里Llens 凹凸透镜,焦距level 级别,色阶light 光线location 定位Mmagic 有魔法的magic wand 魔棒mask 遮罩,掩膜maximum 最大值memory 记忆,内存merge 合并,融合minimum 最小值mode 模式,方式modify 修改,改变monitor 显示器,监视器monochrome 单色的mosaic 马塞克motion 运动multichannel 多通道模式Nnegative 负片,负像noise 噪音,糙点numeric 数字化的;分数Ooffset 位移,偏移option 选项ornament 装饰outline 轮廓,外形Ppalette 调色板parameter 参数,参变量paste 粘贴pastel 彩色粉笔,蜡笔画patchwork 补教,式样path 路径pattern 图案perspective 透视pinch 极化,凹陷或突起plug-ins 插件(滤镜)pointillize 乱点描述polar coordinates 极坐标poster 招贴画posterize 色调分离preference 偏好设定preview 预览previous 前一个pseudo 假的purge 消除Rradial 圆形range 范围,领域relief 救济,援救render 渲染,粉刷,上色reticulation 网状物revert 还原,复原ripple 涟漪,波纹rotate 旋转rough 粗略ruler 标尺Ssaturation 色彩饱和度scale 缩放scratch 暂时,临时screen 屏幕seam 缝,接缝selection 选择,工作区selective 精心挑选的separation 分离,分开sharpen 锐化shear 扭曲变形similar 相似的sketch 草图,画稿skew 偏斜的smart 灵活的,精巧的smooth 平滑的smudge 玷污,污点snapshot 快照solarize 中途曝光spatter 溅,洒落sponge 海绵spray 喷,喷涂stain 着色,染色stamp 盖章,盖印status 状态,状况stereo 立体声stroke 笔划,打击swirl 漩涡,卷状物Ttexture 质地,纹理threshold 两阶调化tile 平铺,窗口并联trace 跟踪,镂边trail 痕迹,足迹transform 转变,变形transparency 透明度twirl 卷曲,快速旋转Uultimate 最终的uncommon 罕见,非凡的units 单位,单元Vvertex 顶点,最高点vertical 垂直的video 视频,电视view 视图,显示方式virus 病毒visible 可见的,明显的visual 视觉的vogue 流行,时尚volume (磁盘)容量vortex 漩涡Wwatercolor 水彩watermark 水印wave 波纹,波动welder 焊接workstation 工作站wrinkle 皱纹Zzero 零zigzag 锯齿zoom in 放大zoom out 缩小2背英语单词的最好方法第一步,准备工作:准备若干张小纸条,数目由您要记忆的单词数来决定,用于写您要记忆的英语单词,原则上每张纸条只写一个单词;准备好30个小纸盒子,第1个盒子存放今天学习与复习的单词,第2个盒子存放明天复习的单词... ...,依次类推,第30个盒子存放第30天复习的单词。第二步,添加新单词:每天把220个新单词写成条子放在盒子1中(如果您想多学可以多放点,想少学点也可以少放点),同时把盒子2的单词放到盒子1中,把盒子3的单词放在盒子2中... ...,依次类推。第三步,学习与复习:开始学习盒子1中的单词,同时根据自己的遗忘参数值决定刚学过的单词放在2 -- 30中的哪个盒子中。根据自己复习效果调整自己的遗忘参数值。最好的办法就是应用“艾宾浩斯--满爱镇微分记忆算法模型”。该模式真正做到记忆最轻松,复习次数最少,每次复习花费的时间最少。该模型可以自动适应于您的遗忘规律,对每个人的每个记忆项,动态维护一套遗忘参数,并且是在记忆的过程中进行动态维护,在最需要复习的时候提醒您进行复习,直到记忆熟悉为止。采用该模型进行记忆,比普通传统的方法更轻松、更快捷、更牢固,您根本不需要操心什么时候学习新单词,什么时候复习应该复习的单词,一切工作由系统自动完成,是传统模式无法比拟的。
2023-07-17 11:34:011

Android系统框架参数——求大神注释

这。。这 我估计只有系统开发者可以看懂
2023-07-17 11:34:092

android6.0在fragment中相机权限怎么动态获取

你要在某些地方把图片的地址保存起来,比如数据库,比如sharedpreference。切换的时候重新读取。
2023-07-17 11:34:431

sharedpreference无法读取按钮状态

this.getActivity()会可能返回null,所以你不能这样做。你需要放在onAttach(Activityactivity)里面进行preferences的初始化。
2023-07-17 11:34:501

高手指教一下华为路由器的路由配置命令?

路由器静态路由配置命令4.6.1 ip route配置或删除静态路由。[ no ] ip route ip-address{ mask | mask-length } { interfacce-name| gateway-address } [ preference preference-value] [ reject | blackhole ]【参数说明】ip-address和mask为目的IP地址和掩码,点分十进制格式,由于要求掩码32位中‘1"必须是连续的,因此点分十进制格式的掩码可以用掩码长度mask-length来代替,掩码长度为掩码中连续‘1"的位数。interfacce-name指定该路由的发送接口名,gateway-address为该路由的下一跳IP地址(点分十进制格式)。preference-value为该路由的优先级别,范围0~255。reject指明为不可达路由。blackhole指明为黑洞路由。【缺省情况】系统缺省可以获取到去往与路由器相连子网的子网路由。在配置静态路由时如果不指定优先级,则缺省为60。如果没有指明reject或blackhole,则缺省为可达路由。【命令模式】全局配置模式【使用指南】配置静态路由的注意事项:当目的IP地址和掩码均为0.0.0.0时,配置的缺省路由,即当查找路由表失败后,根据缺省路由进行包的转发。对优先级的不同配置,可以灵活应用路由管理策略,如配置到达相同目的地的多条路由,如果指定相同优先级,则可实现负载分担;如果指定不同优先级,则可实现路由备份。在配置静态路由时,既可指定发送接口,也可指定下一跳地址,到底采用哪种方法,需要根据实际情况而定:对于支持网络地址到链路层地址解析的接口或点到点接口,指定发送接口即可;对于NBMA接口,如封装X.25或帧中继的接口、拨号口等,支持点到多点,这时除了配置IP路由外,还需在链路层建立二次路由,即IP地址到链路层地址的映射(如dialermap ip、x.25 map ip或frame-relay map ip等),这种情? 配置静态路由不能指定发送接口,应配置下一跳IP地址。【举例】配置缺省路由的下一跳为129.102.0.2。Quidway(config)#ip route 0.0.0.0 0.0.0.0 129.102.0.2【相关命令】show ip route,show ip route detail,showip route static4.6.2 show iproute显示路由表摘要信息。show ip route【命令模式】特权用户模式【使用指南】该命令输出以列表方式显示路由表,每一行代表一条路由,内容包括:目的地址/掩码长度协议优先级度量值下一跳输出接口【举例】Quidway#show ip routeRouting Tables:Destination/Mask Proto Pref Metric Nexthop Interface127.0.0.0/8 Static 0 0 127.0.0.1 127.0.0.1(LO0)127.0.0.1/32 Direct 0 0 127.0.0.1 127.0.0.1(LO0)138.102.128.0/17 Direct 0 0 138.102.129.7 138.102.129.7(EN0)202.38.165.0/24 Direct 0 0 202.38.165.1 202.38.165.1(SL1)【相关命令】ip route,show ip route detail,show iproute static4.6.3 showip route detail显示路由表详细信息show ip route detail【命令模式】特权用户模式【使用指南】该命令输出信息帮助用户进行路由方面的故障诊断。【举例】Quidway#show ip route detailRoute state descriptionNoAdv: do not advertiset Int: AS Interior routeExt: AS External route Del: route to be deletedActive: current route Retain: route retains in the routingtableRej: rejecting route Black: black hole routeRouting Tables:Generate Default: no+ = Active Route, - = Last Active, * = BothDestinations: 4 Routes: 4Holddown: 0 Delete: 9 Hidden: 0**Destination: 127.0.0.0 Mask: 255.0.0.0Protocol: *Static Preference: 0NextHop: 127.0.0.1 Interface: 127.0.0.1(LO0)State: $#@60;NoAdv Int Active Retain Rej$#@62;Age: 19:31:06 Metric: 0/0**Destination: 127.0.0.1 Mask: 255.255.255.255Protocol: *Direct Preference: 0NextHop: 127.0.0.1 Interface: 127.0.0.1(LO0)State: $#@60;NoAdv Int Active Retain$#@62;Age: 114:03:05 Metric: 0/0Holddown路由指的是:一些distance vector 路由协议(如RIP),为了避免错误路由的扩散,提高路由不可达信息的快速准确传播,而采用的一种路由发布策略。它往往在一段时间间隔内固定地发布某条路由,而不管当前实际找回的到同一目的的路由发生了什么变化。其细节参见具体的路由协议。在路由表统计中显示的是当前被Holddown的路由数目。有些路由由于某种原因(如接口Down)暂时不可用,但是又不希望被删除,我们把这种路由隐藏起来。以便以后能重新恢复在路由表统计中显示的是当前被隐藏的路由数目。【相关命令】ip route,show ip route,show ip route static4.6.4 showip route static显示静态路由表。show ip route static【命令模式】特权用户模式【使用指南】根据该命令输出信息,可以帮助用户确认对静态路由的配置是否正确。【举例】Quidway#show ip route staticStatic routes for family INET: (* indicates gateway(s)in use)1.2.3.0/24 pref 60 $#@60;Int$#@62; intf EN0127.0.0.0/8 pref 0 $#@60;NoAdv Int Retain Rej$#@62; intf 127.0.0.1以列表的方式显示静态路由表,每一行代表一条静态路由,从左到右依次为:目的地址/掩码长度优先级$#@60;状态参数$#@62;输出接口和下一跳【相关命令】ip route,show ip route,show ip route detail路由器IP性能配置命令4.5.1 clear ip counters清除IP统计信息。clear ip counters【命令模式】特权用户模式【使用指南】在某些特殊情况下,需要清除IP统计信息,重新进行统计。【举例】清除IP统计信息。Quidway#clear ip counters【相关命令】show ip interface,show ip traffic4.5.2 ifquelen ip配置IP接收队列长度。ifquelen ip queue-length【参数说明】queue-length为接口队列长度。【命令模式】全局配置模式【使用指南】配置IP接收队列长度,会影响系统运行效率,最好在技术支持人员的指导下进行。【举例】配置IP的接收队列为70。Quidway(config)#ifquelen ip 70【相关命令】show ip interface4.5.3 ifquelen arp配置ARP接收队列长度。ifquelen arp queue-length【参数说明】queue-length为接口队列长度。【命令模式】全局配置模式【使用指南】配置ARP接收队列长度,可能会影响到以太网口运行效率,最好在技术支持人员的指导下配置。【举例】配置ARP的接收队列长度为70。Quidway(config)#ifquelen arp 70【相关命令】show ip interface4.5.4 ip tcp header-compression允许或禁止接口上TC 文头压缩。[ no ] ip tcp header-compression【缺省情况】接口上缺省为禁止TCP报文头压缩。【命令模式】接口配置模式【使用指南】在低速广域网线路上运行PPP协议时,由于TCP报文头占全部传输数据的很大比例,这时可以对TCP报文头压缩以提高数据传输效率。【举例】在PPP接口Serial0上允许TCP报文头压缩。Quidway(config-if-Serial0)#ip tcp header-compression【相关命令】encapsulation ppp4.5.5 show ip cache显示IP路由缓冲。show ip cache【命令模式】特权用户模式【使用指南】显示IP最近使用过的路由,帮助用户进行故障诊断。【举例】Quidway#show ip cacheRoute to destination 129.102.100.141:Destination NetMask Type Interface GateWay129.102.100.141 255.255.255.255 direct Ethernet0上面显示信息表示最近刚使用过的路由是到达129.102.100.141的路由。该路由是一条直接路由,输出接口为Ethernet0。 【相关命令】ip route4.5.6 show ip interface显示IP接口信息。show ip interface [ interface-type interface-number ]【参数说明】interface-type为接口类型。interface-number为接口编号。【缺省情况】如果不指定接口,则缺省显示全部IP接口信息。【命令模式】特权用户模式【使用指南】该命令输出接口上全部与IP有关的信息,有助于故障诊断。【举例】Quidway#show ip interface serial 0Interface is Serial0, Index is 2ifFlags=8004 $#@60;NBMA,MULTICAST$#@62;protocol is x25 dte ietf, MTU is 1500, speed is 64000 bpsinput queue is 0/75/0 (current/max/drops)output queue is 0/75/0 (current/max/drops)0 packets input, 0 bytes, 0 multicasts0 input packets dropped, 0 no protocols, 0 input errors0 packets output, 0 bytes, 0 multicasts, 0 output errors上面显示信息表示接口Serial0 编号为2;处于NBMA模式,支持组播;该接口封装的链路层协议是X.25协议,最大传输单元是1500字节,传输速率为64000bps。再以下的信息主要反映了该接口报文的收发情况,比如说接收和发送队列的最大长度、当前队列中报文数和由于队列满而丢弃报文数,接收和发送的报文数,接收和发送的组播报文数,不能识别的报文数等等。【相关命令】show interface4.5.7 show ip traffic显示IP流量统计信息。show ip traffic【命令模式】特权用户模式【使用指南】该命令显示IP收发和拆包、组包的统计信息,有助于故障诊断。【举例】Quidway#show ip trafficIP statistics:Rcvd: 1370 total, 1349 local destination0 format errors, 0 checksum errors0 unknown protocol, 0 bad optionsFrags: 0 fragment rcvd, 0 fragment dropped0 reassembled, 0 timeouts0 fragmented, 0 couldnt fragment, 0 fragment sentSent: 359 generated, 0 forwarded, 0 raw ip packets0 dropped, 0 no route, 0 Compress failsICMP statistics:Rcvd: 0 format errors, 0 checksum errors0 redirects, 0 unreachable, 14 echo, 0 echo reply0 mask requests, 0 mask replies, 0 quench0 parameter, 0 timestamp, 0 info requestSent: 0 redirects, 0 unreachable, 0 echo, 14 echo reply0 mask requests, 0 mask replies, 0 quench0 parameter problem, 0 timestamp, 0 info reply以上显示信息包括:IP 统计信息:接收:接收到1664 个报文,其中1638 个报文送给上层协议,没有报文格式错,没有报文校验错,没有未知协议报文,没有报文选项错。分片:没有收到分片,没有丢弃分片,重装成功的分片数为0,超时分片为数为0;分组成功的报文数为0,不能被分组的报文数为0,被创建发送分片数为0。发送:产生报文470 个,被转发报文数为0,产生原始IP报文数为0,被丢弃报文数为0,无法路由的报文的报文数为0,压缩失败的报文数为0。ICMP统计信息:接收:接收到格式错报文数为0,校验字错报文数为0,重定向报文数为0,不可达报文数为0,echo请求报文16个, echo应答报文数为0,掩码请求报文数为0,掩码应答报文数为0,源站抑制报文数为0,参数错报文数为0,时间戳请求报文数为0,信息请求报文数为0。发送:发送重定向报文数为0,目的站不可达报文数为0,echo请求报文数为0,echo应答报文16 个,掩码请求报文数为0,掩码应答报文数为0,源站抑制报文数为0,参数错报文数为0,时间戳请求报文数为0,信息应答报文数为0。【相关命令】show interface,show ip interface,clear ip counters4.5.8 show tcp brief显示TCP连接状态。show tcp brief【命令模式】特权用户模式【使用指南】该命令显示全部TCP连接状态,使用户随时监控TCP连接。【举例】Quidway#show tcp briefLocalAddress LocalPort ForeignAddress ForeignPort State129.102.100.142 23 129.102.001.092 1038 ESTABLISHED000.000.000.000 23 000.000.000.000 0 LISTEN以上显示信息表示:一个TCP连接已经建立,该TCP连接的本地IP地址为129.102.100.142,本地端口号为23,远地IP地址为129.102.1.92,远地端口号为1038,另外本地有一个对23号端口监听的服务器。【相关命令】show client4.5.9 tcp finwait-time配置TCP finwait定时器。tcp finwait-time time-value【参数说明】time-value为TCP finwait定时器值,单位秒,范围76~3600。【缺省情况】TCP finwait定时器缺省为675秒。【命令模式】全局配置模式【使用指南】当TCP的连接状态由FIN_WATI_1变为FIN_WAIT_2时启动finwait定时器。若finwait定时器超时前仍未收到FIN报文,则TCP连接被终止。对该参数的配置最好在技术支持人员的指导下进行。【举例】配置TCP finwait定时器的值为675秒。Quidway(config)#tcp finwait-time 675【相关命令】tcp synwait-time,tcp window-size4.5.10 tcp synwait-time配置TCP synwait定时器。tcp synwait-time time-value【参数说明】time-value为TCP synwait 定时器值,单位秒,范围2~600。【缺省情况】TCP synwait定时器缺省值为75秒。【命令模式】全局配置模式【使用指南】当发送syn报文时,TCP启动synwait定时器,若synwait超时前未收到回应报文,则TCP连接将被终止。对该参数的配置最好在技术支持人员的指导下进行。【举例】配置TCP synwait定时器为75秒。Quidway(config)#tcp synwait-time 75【相关命令】tcp finwait-time,tcp window-size4.5.11 tcp window-size配置面向连接Socket的收发缓冲区大小。tcp window-size window-size【参数说明】window-size为面向连接Socket的收发缓冲区大小,单位K字节,范围1~32。【缺省情况】面向连接Socket的收发缓冲区大小缺省为4K字节。【命令模式】全局配置模式【使用指南】对该参数的配置最好在技术支持人员的指导下进行。【举例】配置面向连接Socket的收发缓冲区大小为4K字节。Quidway(config)#tcp window-size 4【相关命令】tcp finwait-time,tcp synwait-time【end】
2023-07-17 11:35:091

如何通过反射使用BluetoothHeadset类

Usbsetting 中tethering 设置流程一 资源位置及入口文件USBtethering, usb_tethering_button_textXml/tether_prefs.xml------usb_tether_settings,布局文件packages/apps/Settings/AndroidManifest.xml<!-- Keep compatibility with oldshortcuts. --><activity-aliasandroid:name=".TetherSettings"android:label="@string/tether_settings_title_all"android:clearTaskOnLaunch="true"android:exported="true"android:targetActivity="Settings$TetherSettingsActivity"><meta-dataandroid:name="com.android.settings.FRAGMENT_CLASS"android:value="com.android.settings.TetherSettings"/><meta-dataandroid:name="com.android.settings.TOP_LEVEL_HEADER_ID"android:resource="@id/wireless_settings"/><meta-dataandroid:name="com.android.settings.PARENT_FRAGMENT_TITLE"android:resource="@string/wireless_networks_settings_title"/><meta-dataandroid:name="com.android.settings.PARENT_FRAGMENT_CLASS"android:value="com.android.settings.Settings$WirelessSettingsActivity"/></activity-alias>TetherSettings.java二 触发流程2.1TetherSettings.javapackages/apps/Settings/src/com/android/settings/TetherSettings.javaonPreferenceTreeClickSXlog.d(TAG,"onPreferenceTreeClick - setusbTethering(" + newState + ")mUsbTethering: " + mUsbTethering);setUsbTethering(true);下面是设置时抓取的log日志D/TetherSettings( 543): onPreferenceTreeClick -setusbTethering(true) mUsbTethering: trueD/Tethering(271): setUsbTethering(true)D/UsbDeviceManager( 271):setCurrentFunction(rndis) default: falseW/UsbDeviceManager( 271): handleMessage:2W/UsbDeviceManager( 271): setEnabledFunctions:functions = rndisW/UsbDeviceManager( 271): setEnabledFunctions,mDefaultFunctions: mtp,adbW/UsbDeviceManager( 271): setEnabledFunctions,mCurrentFunctions: mtp,adbD/UsbDeviceManager( 271): setEnabledFunctions,mSettingFunction: mtp,adbW/UsbDeviceManager( 271): containsFunction,functions: rndisW/UsbDeviceManager( 271): containsFunction,function: adbW/UsbDeviceManager( 271): containsFunctionindex: -1W/UsbDeviceManager( 271): addFunction,functions: rndisW/UsbDeviceManager( 271): addFunction, function:adbW/UsbDeviceManager( 271): containsFunction,functions: rndisW/UsbDeviceManager( 271): containsFunction,function: acmW/UsbDeviceManager( 271): containsFunctionindex: -1W/UsbDeviceManager( 271): containsFunction,functions: rndis,adbW/UsbDeviceManager( 271): containsFunction,function: acmW/UsbDeviceManager( 271): containsFunctionindex: -1D/UsbDeviceManager( 271):setUsbConfig(none)W/UsbDeviceManager( 271): setUsbConfig, config:nonepublicboolean onPreferenceTreeClick(PreferenceScreenscreen, Preference preference) {ConnectivityManager cm =(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);if(preference == mUsbTether) {if(!mUsbTethering) {booleannewState = mUsbTether.isChecked();mUsbTethering = true;mUsbTetherCheckEnable = false;mUsbTether.setEnabled(false);SXlog.d(TAG,"onPreferenceTreeClick - setusbTethering(" + newState + ")mUsbTethering: " + mUsbTethering);if(newState) {startProvisioningIfNecessary(USB_TETHERING);} else{setUsbTethering(newState);}} else{returntrue;}} else if(preference == mBluetoothTether) {private voidsetUsbTethering(booleanenabled) {ConnectivityManager cm =(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);if(cm.setUsbTethering(enabled) !=ConnectivityManager.TETHER_ERROR_NO_ERROR) {mUsbTether.setChecked(false);mUsbTether.setSummary(R.string.usb_tethering_errored_subtext);return;}mUsbTether.setSummary("");}2.2ConnectivityManager.javaframeworks/base/core/java/android/net/ConnectivityManager.javaprivatefinal IConnectivityManagermService;public intsetUsbTethering(booleanenable) {try{returnmService.setUsbTethering(enable);} catch(RemoteException e) {returnTETHER_ERROR_SERVICE_UNAVAIL;}}manager 和service有一个对应关系,固定的规则。 manager是为了sdk诞生的,方便app开发者调用。其实可以直接调用service,如mountservice是没有mountmanager的。service是在系统起来是就被android系统启动的,而manager是后期有需要时实例化起来的。Service的目录在:/frameworks/base/services/java/com/android/server/manager的目录在:frameworks/base/core/java/android2.3ConnectivityService.javaframeworks/base/services/java/com/android/serverprivateTethering mTethering;public intsetUsbTethering(booleanenable) {enforceTetherAccessPermission();if(isTetheringSupported()) {returnmTethering.setUsbTethering(enable);} else{returnConnectivityManager.TETHER_ERROR_UNSUPPORTED;}}2.4Tethering.javaframeworks/base/services/java/com/android/server/connectivity/Tethering.javapublic intsetUsbTethering(booleanenable) {UsbManager usbManager = (UsbManager)mContext.getSystemService(Context.USB_SERVICE);………………else{mUsbTetherRequested = true;usbManager.setCurrentFunction(UsbManager.USB_FUNCTION_RNDIS,false);}通过service,来获取manager,进行操作。这个tethering.java的构造函数publicTethering(Context context,INetworkManagementService nmService,INetworkStatsService statsService,IConnectivityManager connService, Looper looper){Context是获取全局信息的接口,2.5 UsbManager.java/frameworks/base/core/java/android/hardware/usb/UsbManager.javapublic void setCurrentFunction(Stringfunction, boolean makeDefault) {try {mService.setCurrentFunction(function,makeDefault);}catch (RemoteException e) {Log.e(TAG, "RemoteException insetCurrentFunction", e);}}2.6frameworks/base/services/java/com/android/server/usb$mengfd1@tablet-C:~/work/A2107/frameworks/base/services/java/com/android/server$cd usbmengfd1@tablet-C:~/work/A2107/frameworks/base/services/java/com/android/server/usb$lsUsbDeviceManager.java UsbHostManager.javaUsbService.java UsbSettingsManager.java/frameworks/base/services/java/com/android/server/usb/UsbService.javapublic void setCurrentFunction(String function, booleanmakeDefault) {mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB,null);if(mDeviceManager != null) {mDeviceManager.setCurrentFunction(function,makeDefault);}else {throw new IllegalStateException("USB devicemode not supported");}}/frameworks/base/services/java/com/android/server/usb/UsbDeviceManager.javapublic void setCurrentFunction(Stringfunction, boolean makeDefault) {if(DEBUG) Slog.d(TAG, "setCurrentFunction(" + function + ") default:" + makeDefault);mHandler.sendMessage(MSG_SET_CURRENT_FUNCTION,function, makeDefault);}public void handleMessage(Message msg){caseMSG_SET_CURRENT_FUNCTION:String function =(String)msg.obj;boolean makeDefault = (msg.arg1 ==1);if (function != null&&function.equals(UsbManager.USB_FUNCTION_CHARGING_ONLY)){mSettingUsbCharging = true;SXlog.d(TAG, "handleMessage -MSG_SET_CURRENT_FUNCTION - USB_FUNCTION_CHARGING_ONLY -makeDefault: " + makeDefault);} else {mSettingUsbCharging = false;}setEnabledFunctions(function,makeDefault);SXlog.d(TAG, "handleMessage -MSG_SET_CURRENT_FUNCTION - function: " +function);break;private void setEnabledFunctions(Stringfunctions, boolean makeDefault) {private boolean setUsbConfig(String config) {SystemProperties.set("sys.usb.config",config);
2023-07-17 11:35:291

android,xml开发,下面的header干嘛用的?android:fragment又是什么?我在文档查不到?“org…ment"干什

header是用在PreferenceActivity里面的。你可以看看平板的系统选项,分别是左边的header对应右边的内容。只要是用在PreferenceActivity里面onBuildHeaders方法。
2023-07-17 11:35:361

怎么样得到引用的类属于那一个JAR包中的

ctrl+鼠标左键 点击该引用的类名,就能跳转到该类文件了,然后在顶栏就能看到类所在的JAR包目录例如:我想寻找下方的PreferenceFragment 是在哪个JAR包下步骤一:ctrl+鼠标左键点击PreferenceFragment 步骤二:此时跳转到了PreferenceFragment 所在的class文件,顶栏看到了该类所在的package步骤三:在左边项目栏--选择Project,然后点一下“2”,就会定位到包所在了,此时能看到preference下确实有PreferenceFragment类 (也可以Ctrl+左击 步骤二中 顶栏的android.preference,也能跳转到包目录)PS:若用的是Eclipse,一般执行步骤二就能看到JAR包目录了。关键点是:CTRL+鼠标左击 方法名 或 类名
2023-07-17 11:35:511

如何在Fragment中使用PreferenceFragment

public FragmentSetup() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflat...
2023-07-17 11:36:002

如何在Fragment中使用PreferenceFragment-CSDN论坛

public FragmentSetup() { // Required empty public constructor}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_setup, container, false);}@Overridepublic void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); // Load the preferences from an XML resource}
2023-07-17 11:36:081

android fragment相互切换的时候生命周期怎么走

Fragment的生命周期初探:因为Fragment必须嵌入在Acitivity中使用,所以Fragment的生命周期和它所在的Activity是密切相关的。如果Activity是暂停状态,其中所有的Fragment都是暂停状态;如果Activity是stopped状态,这个Activity中所有的Fragment都不能被启动;如果Activity被销毁,那么它其中的所有Fragment都会被销毁。但是,当Activity在活动状态,可以独立控制Fragment的状态,比如加上或者移除Fragment。当这样进行fragment transaction(转换)的时候,可以把fragment放入Activity的back stack中,这样用户就可以进行返回操作。使用Fragment时,需要继承Fragment或者Fragment的子类(DialogFragment, ListFragment, PreferenceFragment, WebViewFragment),所以Fragment的代码看起来和Activity的类似。每当创建一个Fragment时,首先添加以下三个回调方法:onCreate():系统在创建Fragment的时候调用这个方法,这里应该初始化相关的组件,一些即便是被暂停或者被停止时依然需要保留的东西。 onCreateView():当第一次绘制Fragment的UI时系统调用这个方法,该方法将返回一个View,如果Fragment不提供UI也可以返回null。注意,如果继承自ListFragment,onCreateView()默认的实现会返回一个ListView,所以不用自己实现。 onPause():当用户离开Fragment时第一个调用这个方法,需要提交一些变化,因为用户很可能不再返回来。将Fragment加载到Activity当中有两种方式:方式一:添加Fragment到Activity的布局文件当中 方式二:在Activity的代码中动态添加Fragment(荐)第一种方式虽然简单但灵活性不够。添加Fragment到Activity的布局文件当中,就等同于将Fragment及其视图与activity的视图绑定在一起,且在activity的生命周期过程中,无法切换fragment视图。第二种方式比较复杂,但也是唯一一种可以在运行时控制fragment的方式(加载、移除、替换)。
2023-07-17 11:36:152

android fragment相互切换的时候生命周期怎么走

Fragment的生命周期初探:因为Fragment必须嵌入在Acitivity中使用,所以Fragment的生命周期和它所在的Activity是密切相关的。如果Activity是暂停状态,其中所有的Fragment都是暂停状态;如果Activity是stopped状态,这个Activity中所有的Fragment都不能被启动;如果Activity被销毁,那么它其中的所有Fragment都会被销毁。但是,当Activity在活动状态,可以独立控制Fragment的状态,比如加上或者移除Fragment。当这样进行fragment transaction(转换)的时候,可以把fragment放入Activity的back stack中,这样用户就可以进行返回操作。使用Fragment时,需要继承Fragment或者Fragment的子类(DialogFragment, ListFragment, PreferenceFragment, WebViewFragment),所以Fragment的代码看起来和Activity的类似。每当创建一个Fragment时,首先添加以下三个回调方法:onCreate():系统在创建Fragment的时候调用这个方法,这里应该初始化相关的组件,一些即便是被暂停或者被停止时依然需要保留的东西。 onCreateView():当第一次绘制Fragment的UI时系统调用这个方法,该方法将返回一个View,如果Fragment不提供UI也可以返回null。注意,如果继承自ListFragment,onCreateView()默认的实现会返回一个ListView,所以不用自己实现。 onPause():当用户离开Fragment时第一个调用这个方法,需要提交一些变化,因为用户很可能不再返回来。将Fragment加载到Activity当中有两种方式:方式一:添加Fragment到Activity的布局文件当中 方式二:在Activity的代码中动态添加Fragment(荐)第一种方式虽然简单但灵活性不够。添加Fragment到Activity的布局文件当中,就等同于将Fragment及其视图与activity的视图绑定在一起,且在activity的生命周期过程中,无法切换fragment视图。第二种方式比较复杂,但也是唯一一种可以在运行时控制fragment的方式(加载、移除、替换)。
2023-07-17 11:36:471

android 怎么在自定义控件中获取控件所在fragment的实例

getFragmentManager().findFragmentById(id).getView().findViewById(id) 这样应该就可以了
2023-07-17 11:36:552

继承PreferenceActivity,报需要验证fragment是否有效

@Overrideprotected boolean isValidFragment (String fragmentName) {return [YOUR_FRAGMENT_NAME].class.getName().equals(fragmentName);}或者@Overrideprotected boolean isValidFragment (String fragmentName) {return true;}
2023-07-17 11:37:021

如何将activity装载进fragment

  Fragment是activity的界面中的一部分或一种行为。你可以把多个Fragment们组合到一个activity中来创建一个多面界面,并且你可以在多个activity中重用一个Fragment。你可以把Fragment认为模块化的一段activity,它具有自己的生命周期,接收它自己的事件,并可以在activity运行时被添加或删除。    Fragment不能独立存在,它必须嵌入到activity中,而且Fragment的生命周期直接受所在的activity的影响。例如:当activity暂停时,它拥有的所有的Fragment们都暂停了,当activity销毁时,它拥有的所有Fragment们都被销毁。然而,当activity运行时(在onResume()之后,onPause()之前),你可以单独地操作每个Fragment,比如添加或删除它们。当你在执行上述针对Fragment的事务时,你可以将事务添加到一个栈中,这个栈被activity管理,栈中的每一条都是一个Fragment的一次事务。有了这个栈,就可以反向执行Fragment的事务,这样就可以在Fragment级支持“返回”键(向后导航)。    当向activity中添加一个Fragment时,它须置于ViewGroup控件中,并且需定义Fragment自己的界面。你可以在layoutxml文件中声明Fragment,元素为:<fragment>;也可以在代码中创建Fragment,然后把它加入到ViewGroup控件中。然而,Fragment不一定非要放在activity的界面中,它可以隐藏在后台为actvitiy工作。    设计的哲学:    为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,通过官方文档中的这张图片可以很明显地看到Fragment的好处:        注:左边为平板,右边为手持设备。        二、Fragment的生命周期:    因为Fragment必须嵌入在Acitivity中使用,所以Fragment的生命周期和它所在的Activity是密切相关的。    如果Activity是暂停状态,其中所有的Fragment都是暂停状态;如果Activity是stopped状态,这个Activity中所有的Fragment都不能被启动;如果Activity被销毁,那么它其中的所有Fragment都会被销毁。    但是,当Activity在活动状态,可以独立控制Fragment的状态,比如加上或者移除Fragment。    当这样进行fragment transaction(转换)的时候,可以把fragment放入Activity的back stack中,这样用户就可以进行返回操作。    使用Fragment时,需要继承Fragment或者Fragment的子类(DialogFragment, ListFragment, PreferenceFragment, WebViewFragment),所以Fragment的代码看起来和Activity的类似。    每当创建一个Fragment时,首先添加以下三个回调方法:    onCreate():系统在创建Fragment的时候调用这个方法,这里应该初始化相关的组件,一些即便是被暂停或者被停止时依然需要保留的东西。  onCreateView():当第一次绘制Fragment的UI时系统调用这个方法,该方法将返回一个View,如果Fragment不提供UI也可以返回null。注意,如果继承自ListFragment,onCreateView()默认的实现会返回一个ListView,所以不用自己实现。  onPause():当用户离开Fragment时第一个调用这个方法,需要提交一些变化,因为用户很可能不再返回来。  将Fragment加载到Activity当中有两种方式:    方式一:添加Fragment到Activity的布局文件当中  方式二:在Activity的代码中动态添加Fragment  第一种方式虽然简单但灵活性不够。添加Fragment到Activity的布局文件当中,就等同于将Fragment及其视图与activity的视图绑定在一起,且在activity的生命周期过程中,无法切换fragment视图。    第二种方式比较复杂,但也是唯一一种可以在运行时控制fragment的方式(加载、移除、替换)。
2023-07-17 11:37:091

常用英语单词5000

最常用英语单词有accent 加重、accurate 精确、acquire 获得、action 操作,运算、adjust 调整、ambient light 环境光、angle 角度、anti-aliased 平滑处理 arbitrary 任意的等。1常用英语单词1000Aaccent 加重accurate 精确acquire 获得action 操作,运算adjust 调整ambient light 环境光angle 角度anti-aliased 平滑处理arbitrary 任意的arrange 排列arrow 箭头artistic 艺术的,美术的Bbalance 平衡bar 条,栏base 基准batch 批量,成批bevel 使成斜角,斜切bilinear 双线性插值bitmap 位图,点阵图blend 混合,调和blur 模糊bold 加粗border 边界,边框brightness 亮度brush 画笔,笔形build 建造,创立burn 焦化,烧黑button 按钮Ccache 快速存储器calculation 计算calibrate 校准,校验canvas 画布carve 镌刻cascade 层叠chalk 粉笔,作记号channel 通道,频道charcoal 炭笔画chrome 铬黄,铬合金classic 经典的click (单)击(鼠标)clipboard 剪贴版clone 复制cloud 云彩command 命令content 内容continue 连续的,持续的contour 轮廓线,周线contract 收缩,缩小contrast 反差,对比coordinate 协调,协作craquelue 裂纹crayon 蜡笔crop 剪裁crystallize 水晶curl 螺旋状物,卷曲的current 当前的cursor 光标,游标curve 曲线custom 自定义Ddarken 较黑的,使变黑daubs 涂抹define 定义design 设计destination 目标,对象difference 区别,差异diffuse 散乱扩散displace 转移distort 扭曲document 文档,文件dodge 加亮drop shadow 投影duotone 双色调duplicate 复制dust 灰尘,尘土Eedge 边界effect 效果作用embed 嵌入emboss 浮雕enlarge 放大equalize 平均化expand 扩充,扩展export 输出extrude 突出eyedropper 吸管Ffacet 刻面feather 晕开,羽化fill 填充flare 张开,闪耀flatten 变平flip 翻转fragment 碎片fresco 壁画Ggamut 整个领域general 普通的glass 玻璃杯glow 发光gradient 渐变grain 纹理graphics 图形grayscale 灰阶,灰度图grid 坐标格子group 群,组grow 成长guide 参考,参考线Hhalftone 半色调histogram 柱状图horizontal 水平hue 色相Iicon 图标image 图像import 输入index 索引Inner 内部的input 输入intensity 亮度inverse 相反invert 反转,反相Kkeyboard 键盘kilometre 千米,公里Llens 凹凸透镜,焦距level 级别,色阶light 光线location 定位Mmagic 有魔法的magic wand 魔棒mask 遮罩,掩膜maximum 最大值memory 记忆,内存merge 合并,融合minimum 最小值mode 模式,方式modify 修改,改变monitor 显示器,监视器monochrome 单色的mosaic 马塞克motion 运动multichannel 多通道模式Nnegative 负片,负像noise 噪音,糙点numeric 数字化的;分数Ooffset 位移,偏移option 选项ornament 装饰outline 轮廓,外形Ppalette 调色板parameter 参数,参变量paste 粘贴pastel 彩色粉笔,蜡笔画patchwork 补教,式样path 路径pattern 图案perspective 透视pinch 极化,凹陷或突起plug-ins 插件(滤镜)pointillize 乱点描述polar coordinates 极坐标poster 招贴画posterize 色调分离preference 偏好设定preview 预览previous 前一个pseudo 假的purge 消除Rradial 圆形range 范围,领域relief 救济,援救render 渲染,粉刷,上色reticulation 网状物revert 还原,复原ripple 涟漪,波纹rotate 旋转rough 粗略ruler 标尺Ssaturation 色彩饱和度scale 缩放scratch 暂时,临时screen 屏幕seam 缝,接缝selection 选择,工作区selective 精心挑选的separation 分离,分开sharpen 锐化shear 扭曲变形similar 相似的sketch 草图,画稿skew 偏斜的smart 灵活的,精巧的smooth 平滑的smudge 玷污,污点snapshot 快照solarize 中途曝光spatter 溅,洒落sponge 海绵spray 喷,喷涂stain 着色,染色stamp 盖章,盖印status 状态,状况stereo 立体声stroke 笔划,打击swirl 漩涡,卷状物Ttexture 质地,纹理threshold 两阶调化tile 平铺,窗口并联trace 跟踪,镂边trail 痕迹,足迹transform 转变,变形transparency 透明度twirl 卷曲,快速旋转Uultimate 最终的uncommon 罕见,非凡的units 单位,单元Vvertex 顶点,最高点vertical 垂直的video 视频,电视view 视图,显示方式virus 病毒visible 可见的,明显的visual 视觉的vogue 流行,时尚volume (磁盘)容量vortex 漩涡Wwatercolor 水彩watermark 水印wave 波纹,波动welder 焊接workstation 工作站wrinkle 皱纹Zzero 零zigzag 锯齿zoom in 放大zoom out 缩小2背英语单词的最好方法第一步,准备工作:准备若干张小纸条,数目由您要记忆的单词数来决定,用于写您要记忆的英语单词,原则上每张纸条只写一个单词;准备好30个小纸盒子,第1个盒子存放今天学习与复习的单词,第2个盒子存放明天复习的单词... ...,依次类推,第30个盒子存放第30天复习的单词。第二步,添加新单词:每天把220个新单词写成条子放在盒子1中(如果您想多学可以多放点,想少学点也可以少放点),同时把盒子2的单词放到盒子1中,把盒子3的单词放在盒子2中... ...,依次类推。第三步,学习与复习:开始学习盒子1中的单词,同时根据自己的遗忘参数值决定刚学过的单词放在2 -- 30中的哪个盒子中。根据自己复习效果调整自己的遗忘参数值。最好的办法就是应用“艾宾浩斯--满爱镇微分记忆算法模型”。该模式真正做到记忆最轻松,复习次数最少,每次复习花费的时间最少。该模型可以自动适应于您的遗忘规律,对每个人的每个记忆项,动态维护一套遗忘参数,并且是在记忆的过程中进行动态维护,在最需要复习的时候提醒您进行复习,直到记忆熟悉为止。采用该模型进行记忆,比普通传统的方法更轻松、更快捷、更牢固,您根本不需要操心什么时候学习新单词,什么时候复习应该复习的单词,一切工作由系统自动完成,是传统模式无法比拟的。
2023-07-17 11:37:171

android addpreferencesfromintent没有

  addPreferencesFromResource(R.xml.setting_preference);  因为最近的项目我都要把程序的资源文件都放到另一个apk中。而上面这个方法中只能传本地的或系统的资源id。那么我就找到了类似的方法:addPreferencesFromIntent(Intent intent);百度goolge了一下发现都是没有这个方法的例子只有搜索google的里面的api:  public void addPreferencesFromIntent (Intent intent)  Since: API Level 1  This method is deprecated.This function is not relevant for a modern fragment-based PreferenceActivity.  Adds preferences from activities that match the given Intent.  Parameters  intent  The Intent to query activities.  这样介绍就很简单了,只是让我们去查询activities。没有说明xml是什么给的。没办法我只能去看源码,看他们是什么解析Intent的,那我就给出一个可用的intent。  因为是继承PreferenceFragment的,我就从源码找到frameworks/base/core/java/android/preference/PreferenceFragment.java这个类:  view plaincopy to clipboardprint?  <span style="white-space:pre"> </span>public void addPreferencesFromIntent(Intent intent) { requirePreferenceManager(); setPreferenceScreen(mPreferenceManager.inflateFromIntent(intent, getPreferenceScreen())); }  <span style="white-space:pre"> </span>public void addPreferencesFromIntent(Intent intent) { requirePreferenceManager(); setPreferenceScreen(mPreferenceManager.inflateFromIntent(intent, getPreferenceScreen())); }然后这里又用到了mPreferenceManager.inflateFromIntentt(intent, getPreferenceScreen()),那么在找到这个类frameworks/base/core/java/android/preference/PreferenceManager.java:  view plaincopy to clipboardprint?  <span style="white-space:pre"> </span>PreferenceScreen inflateFromIntent(Intent queryIntent, PreferenceScreen rootPreferences) { final List<ResolveInfo> activities = queryIntentActivities(queryIntent); final HashSet<String> inflatedRes = new HashSet<String>(); for (int i = activities.size() - 1; i >= 0; i--) { final ActivityInfo activityInfo = activities.get(i).activityInfo; final Bundle metaData = activityInfo.metaData; if ((metaData == null) || !metaData.containsKey(METADATA_KEY_PREFERENCES)) { continue; } // Need to concat the package with res ID since the same res ID // can be re-used across contexts final String uniqueResId = activityInfo.packageName + ":" + activityInfo.metaData.getInt(METADATA_KEY_PREFERENCES); if (!inflatedRes.contains(uniqueResId)) { inflatedRes.add(uniqueResId); final Context context; try { context = mContext.createPackageContext(activityInfo.packageName, 0); } catch (NameNotFoundException e) { Log.w(TAG, "Could not create context for " + activityInfo.packageName + ": " + Log.getStackTraceString(e)); continue; } final PreferenceInflater inflater = new PreferenceInflater(context, this); final XmlResourceParser parser = activityInfo.loadXmlMetaData(context .getPackageManager(), METADATA_KEY_PREFERENCES); rootPreferences = (PreferenceScreen) inflater .inflate(parser, rootPreferences, true); parser.close(); } } rootPreferences.onAttachedToHierarchy(this); return rootPreferences; }  <span style="white-space:pre"> </span>PreferenceScreen inflateFromIntent(Intent queryIntent, PreferenceScreen rootPreferences) { final List<ResolveInfo> activities = queryIntentActivities(queryIntent); final HashSet<String> inflatedRes = new HashSet<String>(); for (int i = activities.size() - 1; i >= 0; i--) { final ActivityInfo activityInfo = activities.get(i).activityInfo; final Bundle metaData = activityInfo.metaData; if ((metaData == null) || !metaData.containsKey(METADATA_KEY_PREFERENCES)) { continue; } // Need to concat the package with res ID since the same res ID // can be re-used across contexts final String uniqueResId = activityInfo.packageName + ":" + activityInfo.metaData.getInt(METADATA_KEY_PREFERENCES); if (!inflatedRes.contains(uniqueResId)) { inflatedRes.add(uniqueResId); final Context context; try { context = mContext.createPackageContext(activityInfo.packageName, 0); } catch (NameNotFoundException e) { Log.w(TAG, "Could not create context for " + activityInfo.packageName + ": " + Log.getStackTraceString(e)); continue; } final PreferenceInflater inflater = new PreferenceInflater(context, this); final XmlResourceParser parser = activityInfo.loadXmlMetaData(context .getPackageManager(), METADATA_KEY_PREFERENCES); rootPreferences = (PreferenceScreen) inflater .inflate(parser, rootPreferences, true); parser.close(); } } rootPreferences.onAttachedToHierarchy(this); return rootPreferences; }从上面的代码我们就知道要从intent中获取一组activity。通过 activityInfo.metaData.getInt(METADATA_KEY_PREFERENCES)我们知道就是从activity拿的<meta-data 这些数据,那么我们在AndroidManifest.xml中eclipse提示的<meta-data只有三个属性:  那么我么就不难得出结论<meta-data 中的nane就是METADATA_KEY_PREFERENCES,而xml就是resource。  接下来还有一个问题就是METADATA_KEY_PREFERENCES的值是多少。搜一下在PreferenceManager.java中有如下定义:  view plaincopy to clipboardprint?  public static final String METADATA_KEY_PREFERENCES = "android.preference";  public static final String METADATA_KEY_PREFERENCES = "android.preference";知道了以上原理我们来验证一下:  新建一个工程,在里面的activity标签中加<meta-data,如下:  view plaincopy to clipboardprint?  <span style="white-space:pre"> </span><activity android:name="com.winca.style.defaultskin.RadioReadSettingXMLActivity" android:icon="@drawable/radio" android:label="@string/radio_app_name" > <meta-data android:name="android.preference" android:resource="@xml/setting_preference"/> </activity>  <span style="white-space:pre"> </span><activity android:name="com.winca.style.defaultskin.RadioReadSettingXMLActivity" android:icon="@drawable/radio" android:label="@string/radio_app_name" > <meta-data android:name="android.preference" android:resource="@xml/setting_preference"/> </activity>这个xml就是从我们程序中拷贝多来放到新建的工程中的。  原来我们工程用的addPreferencesFromResource(R.xml.setting_preference);这语句,我们这样替换:  view plaincopy to clipboardprint?  <pre name="code" class="java"><span style="white-space:pre"> </span>Intent xmlIntent = new Intent(); ComponentName component = new ComponentName("com.winca.style.defaultskin","com.winca.style.defaultskin.RadioReadSettingXMLActivity"); xmlIntent.setComponent(component); addPreferencesFromIntent(xmlIntent);  <pre name="code" class="java"><span style="white-space:pre"> </span>Intent xmlIntent = new Intent(); ComponentName component = new ComponentName("com.winca.style.defaultskin","com.winca.style.defaultskin.RadioReadSettingXMLActivity"); xmlIntent.setComponent(component); addPreferencesFromIntent(xmlIntent);运行一下,正常显示xml里面的。问题解决。
2023-07-17 11:37:241

java在主activity中能访问到fragment的空间吗

Android上的界面展示都是通过Activity实现的,Activity实在是太常用了。但是Activity也有它的局限性,同样的界面在手机上显示可能很好看,在平板上就未必了,因为平板的屏幕非常大,手机的界面放在平板上可能会有过分被拉长、控件间距过大等情况。这个时候更好的体验效果是在Activity中嵌入"小Activity",然后每个"小Activity"又可以拥有自己的布局。因此,我们今天的主角Fragment登场了。 一、Fragment初探: Fragment是activity的界面中的一部分或一种行为。你可以把多个Fragment们组合到一个activity中来创建一个多面界面,并且你可以在多个activity中重用一个Fragment。你可以把Fragment认为模块化的一段activity,它具有自己的生命周期,接收它自己的事件,并可以在activity运行时被添加或删除。 Fragment不能独立存在,它必须嵌入到activity中,而且Fragment的生命周期直接受所在的activity的影响。例如:当activity暂停时,它拥有的所有的Fragment们都暂停了,当activity销毁时,它拥有的所有Fragment们都被销毁。然而,当activity运行时(在onResume()之后,onPause()之前),你可以单独地操作每个Fragment,比如添加或删除它们。当你在执行上述针对Fragment的事务时,你可以将事务添加到一个栈中,这个栈被activity管理,栈中的每一条都是一个Fragment的一次事务。有了这个栈,就可以反向执行Fragment的事务,这样就可以在Fragment级支持“返回”键(向后导航)。 当向activity中添加一个Fragment时,它须置于ViewGroup控件中,并且需定义Fragment自己的界面。你可以在layoutxml文件中声明Fragment,元素为:<fragment>;也可以在代码中创建Fragment,然后把它加入到ViewGroup控件中。然而,Fragment不一定非要放在activity的界面中,它可以隐藏在后台为actvitiy工作。 设计的哲学: 为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,通过官方文档中的这张图片可以很明显地看到Fragment的好处:注:左边为平板,右边为手持设备。二、Fragment的生命周期: 因为Fragment必须嵌入在Acitivity中使用,所以Fragment的生命周期和它所在的Activity是密切相关的。 如果Activity是暂停状态,其中所有的Fragment都是暂停状态;如果Activity是stopped状态,这个Activity中所有的Fragment都不能被启动;如果Activity被销毁,那么它其中的所有Fragment都会被销毁。 但是,当Activity在活动状态,可以独立控制Fragment的状态,比如加上或者移除Fragment。 当这样进行fragment transaction(转换)的时候,可以把fragment放入Activity的back stack中,这样用户就可以进行返回操作。 使用Fragment时,需要继承Fragment或者Fragment的子类(DialogFragment, ListFragment, PreferenceFragment, WebViewFragment),所以Fragment的代码看起来和Activity的类似。 每当创建一个Fragment时,首先添加以下三个回调方法: onCreate():系统在创建Fragment的时候调用这个方法,这里应该初始化相关的组件,一些即便是被暂停或者被停止时依然需要保留的东西。onCreateView():当第一次绘制Fragment的UI时系统调用这个方法,该方法将返回一个View,如果Fragment不提供UI也可以返回null。注意,如果继承自ListFragment,onCreateView()默认的实现会返回一个ListView,所以不用自己实现。onPause():当用户离开Fragment时第一个调用这个方法,需要提交一些变化,因为用户很可能不再返回来。将Fragment加载到Activity当中有两种方式: 方式一:添加Fragment到Activity的布局文件当中方式二:在Activity的代码中动态添加Fragment第一种方式虽然简单但灵活性不够。添加Fragment到Activity的布局文件当中,就等同于将Fragment及其视图与activity的视图绑定在一起,且在activity的生命周期过程中,无法切换fragment视图。 第二种方式比较复杂,但也是唯一一种可以在运行时控制fragment的方式(加载、移除、替换)。 下面将分别介绍一下。    三、在Activity的布局文件中添加Fragment:(不推荐) 平板的模拟器参数如下:然后新建一个工程文件。然后继续如下步骤: (1)新建文件fragment_hello.xml和HelloFragment.java: fragment_hello.xml代码如下:(即Fragment的布局文件) 复制代码<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入内容"/> <RatingBar android:id="@+id/ratingBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>复制代码HelloFragment.java代码如下: 复制代码 1 package com.example.m01_fragment01; 2 3 import android.app.Fragment; 4 import android.os.Bundle; 5 import android.view.LayoutInflater; 6 import android.view.View; 7 import android.view.ViewGroup; 8 9 public class HelloFragment extends Fragment {10 11 @Override12 public void onCreate(Bundle savedInstanceState) {13 super.onCreate(savedInstanceState);14 }15 16 @Override17 public View onCreateView(LayoutInflater inflater, ViewGroup container,18 Bundle savedInstanceState) {19 View view = inflater.inflate(R.layout.fragment_hello, null); // View android.view.LayoutInflater.inflate(int resource, ViewGroup root) 20 return view;21 }22 23 @Override24 public void onPause() {25 super.onPause();26 }27 }复制代码重点在于第19和20行,通过inflate()方法将自定义的fragment的布局加载进来。 19行代码中,第二个参数中,如果布局没有根,那就用null。 注:上方代码中,因为我们的程序是面对Android 4.0以上版本的,所以导入Fragment的包时,选择第一个:android.app.Fragment(2)将Fragment添加到Activity的布局中: 修改activity_main.xml的代码如下: 复制代码 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 tools:context=".MainActivity" > 6 7 <fragment 8 android:id="@+id/fragment_hello" 9 android:name="com.example.m01_fragment02.HelloFragment"10 android:layout_width="wrap_content"11 android:layout_height="wrap_content" />12 </LinearLayout>复制代码08行和09行是关键。其中android:name属性填上你自己创建的fragment的完整类名。如下图:当系统创建这个Activity的布局文件时,系统会实例化每一个fragment,并且调用它们的onCreateView()方法,来获得相应fragment的布局,并将返回值插入fragment标签所在的地方。 运行之后,效果如下:实际上,这种方式在开发中并不推荐,我们来介绍另外一种方法。四、在activity代码中添加fragment: 【实例】点击左侧fragment中的按钮,弹出右侧的fragment。新建一个工程文件,然后步骤如下: (1)将activity_main的布局分为两部分:左边占1/4,右边占3/4。修改activity_main.xml的代码如下: 复制代码<LinearLayout 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" tools:context=".MainActivity" android:orientation="horizontal" > <LinearLayout android:id="@+id/left" android:layout_width="0dp" android:layout_height="match_parent" android:orientation="vertical" android:layout_weight="1" android:background="#00BFFF" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="显示"/> </LinearLayout> <LinearLayout android:id="@+id/right" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="3" android:background="#00FFFF" android:orientation="vertical" > </LinearLayout> </LinearLayout>复制代码上方代码中,一个LinearLayout代表一个Fragment的容器,记得要给每个fragment加一个容器的id。
2023-07-17 11:37:311

如何在activity中默认加载一个listfragment-CSDN论坛

  Fragment是activity的界面中的一部分或一种行为。你可以把多个Fragment们组合到一个activity中来创建一个多面界面,并且你可以在多个activity中重用一个Fragment。你可以把Fragment认为模块化的一段activity,它具有自己的生命周期,接收它自己的事件,并可以在activity运行时被添加或删除。    Fragment不能独立存在,它必须嵌入到activity中,而且Fragment的生命周期直接受所在的activity的影响。例如:当activity暂停时,它拥有的所有的Fragment们都暂停了,当activity销毁时,它拥有的所有Fragment们都被销毁。然而,当activity运行时(在onResume()之后,onPause()之前),你可以单独地操作每个Fragment,比如添加或删除它们。当你在执行上述针对Fragment的事务时,你可以将事务添加到一个栈中,这个栈被activity管理,栈中的每一条都是一个Fragment的一次事务。有了这个栈,就可以反向执行Fragment的事务,这样就可以在Fragment级支持“返回”键(向后导航)。    当向activity中添加一个Fragment时,它须置于ViewGroup控件中,并且需定义Fragment自己的界面。你可以在layoutxml文件中声明Fragment,元素为:<fragment>;也可以在代码中创建Fragment,然后把它加入到ViewGroup控件中。然而,Fragment不一定非要放在activity的界面中,它可以隐藏在后台为actvitiy工作。    设计的哲学:    为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,通过官方文档中的这张图片可以很明显地看到Fragment的好处:        注:左边为平板,右边为手持设备。        二、Fragment的生命周期:    因为Fragment必须嵌入在Acitivity中使用,所以Fragment的生命周期和它所在的Activity是密切相关的。    如果Activity是暂停状态,其中所有的Fragment都是暂停状态;如果Activity是stopped状态,这个Activity中所有的Fragment都不能被启动;如果Activity被销毁,那么它其中的所有Fragment都会被销毁。    但是,当Activity在活动状态,可以独立控制Fragment的状态,比如加上或者移除Fragment。    当这样进行fragment transaction(转换)的时候,可以把fragment放入Activity的back stack中,这样用户就可以进行返回操作。    使用Fragment时,需要继承Fragment或者Fragment的子类(DialogFragment, ListFragment, PreferenceFragment, WebViewFragment),所以Fragment的代码看起来和Activity的类似。    每当创建一个Fragment时,首先添加以下三个回调方法:    onCreate():系统在创建Fragment的时候调用这个方法,这里应该初始化相关的组件,一些即便是被暂停或者被停止时依然需要保留的东西。  onCreateView():当第一次绘制Fragment的UI时系统调用这个方法,该方法将返回一个View,如果Fragment不提供UI也可以返回null。注意,如果继承自ListFragment,onCreateView()默认的实现会返回一个ListView,所以不用自己实现。  onPause():当用户离开Fragment时第一个调用这个方法,需要提交一些变化,因为用户很可能不再返回来。  将Fragment加载到Activity当中有两种方式:    方式一:添加Fragment到Activity的布局文件当中  方式二:在Activity的代码中动态添加Fragment  第一种方式虽然简单但灵活性不够。添加Fragment到Activity的布局文件当中,就等同于将Fragment及其视图与activity的视图绑定在一起,且在activity的生命周期过程中,无法切换fragment视图。    第二种方式比较复杂,但也是唯一一种可以在运行时控制fragment的方式(加载、移除、替换)。
2023-07-17 11:37:391

苹果电脑pro系统重装磁盘工具里找不到Macintosh HD是怎么回事?(如图)

用了一段时间的苹果笔记本,再装上Win8.1双系统后。备份删除文档后,看着大大的黄色磁盘空间,却又找不到相应的文件,黄黄的80G看着手痒。重装后,前后对比,那个差距之大。还是很让自己高兴一番。另外,有一个启动U盘在手,系统要怎么崩溃,20分钟搞定。不过要等到Mac系统崩溃,那个概率可不高。当然,好用最好!接下来就让我们重装一下Mac系统,让电脑焕然一新!开启分步阅读模式工具材料:苹果Mac电脑备份8G容量U盘一个Mac OSX 10.9.4 dmg 镜像文件电源线缆(全程保持充电)苹果ID和密码(没有重要的软件,可以不用)操作方法01下载Mac OS X 镜像文件根据笔记本型号,下载对应的镜像文件。02下载好系统软件,拷贝到文稿根目录下,不要放在中文命名的文件夹里。03制作苹果Mac启动盘04开机,插上8G空U盘,(U盘需要格式化,有重要数据请先备份。如果苹果电脑无法识别这个U盘,请重新格式化为FAT-30格式。重新插入即可。)重装系统也要格式化Mac磁盘,苹果笔记本有重要数据的也要先备份。有装双系统的,Win系统不受Mac重装系统影响。但重装过程中,请不要动BootCamp这个磁盘。有购买软件或有比较重要的软件,只要记住自己的苹果ID和密码,装好系统后,可以免费恢复重装。在Finder图标里双击打开磁盘工具。05选择左侧磁盘栏U盘,并确认,否则删除了其他磁盘,可就有些麻烦了。 选择Mac OS 格式。点击抹掉。(这里的抹掉,是格式化。把U盘的FAT-32格式转换为Mac OS 格式。)06之后选择恢复,点击映像,在文稿里选择Mac OS X 10.9.4.dmg系统软件,然后点击打开。目标磁盘为U盘,将U盘图标拖到目标磁盘空白处,点击恢复。07开始制作苹果Mac启动U盘。08U盘制作过程大概20~60分钟左右,启动U盘就制作好了。09安装Mac系统插上制作好的苹果启动U盘,开机按Option键或Alt键。调出启动菜单,如下图。10选择 OS X Base system 的Mac启动盘,按回车。11进入安装界面,点击继续12如果只是想重装Mac系统,可以不用格式化磁盘,点击继续。建议彻底格式化Mac磁盘的,这样装完的系统是全新的,磁盘更干净,运行更流畅。在左上角实用工具中打开磁盘工具。13选择Macintosh HD 磁盘,有装双系统的会多一个BootCamp的Win磁盘,选择并确认磁盘。格式选择为Mac OS 扩展,(不要选Mac OS区分大小写,会导致部分软件无法运行。)14点击安装15安装过程20分钟左右,保持电力充足,20~40分钟后,系统自动重启,安装完成。1620分钟后,系统自动重启,安装完成。17苹果Mac设置如同新买的Mac一样,重启之后,进入欢迎界面,逐步设置地区,无线网,定位,苹果ID等信息。选择国家18连接网络,需要联网设置苹果ID等一些设置。选择国家19输入自己的苹果ID和密码20进入Mac桌面,除了Dock,什么内容都没有,就连磁盘空间,连系统在内,也不到11G的占用空间。让我们再一次体会一个全新的苹果笔记本。21登陆苹果ID,输入密码,之前购买和用过的软件又出现在面前,选择需要安装的软件,重新安装即可,可不要贪多,到时磁盘空间又满了。特别提示要有耐心无本页搜狗指南内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。
2023-07-17 11:31:272

江南百景图兑换码有哪些

江南百景图兑换码有哪些,有很多江南百景图的新人盆友还不知道兑换码有哪些,下面小编来给大家分享下江南百景图的通用兑换码,希望能够帮助到大家~江南百景图8月兑换码大全1、唐伯虎兑换码FszLrrYq、RkY5bAbB2、8月最新兑换码FszLrrYq、RkY5bAbB、R5BFtvTQ、ifmfBKuh、Aud3yRnK3、通用兑换码AT880424、AT200415、AT160628、AT991227、AT880493兑码小技巧1、这些都是可用而且是最新的兑换码,玩家们可以放心使用,目前这款游戏的兑换码是越来越少,所以玩家们在领取的时候一定要及时兑换,否则被其他玩家兑换了可能就无法正常兑换了呢。2、前游戏除了预约兑换码以外,其他的兑换码都需要通过购买的方式来获得,所以玩家们可以通过不同的途径来获得兑换码。3、大部分的兑换码都是人物兑换码,还有道具兑换码,所以玩家们领到礼包后到游戏中兑换就能知道兑换码得具体内容。4、游戏中的道具如补天石还是很重要的,所以玩家们想要多领取兑换码就要多参与官方活动,这样就能更快的获得兑换码了。
2023-07-17 11:31:281

2022年蹦迪最火的十首歌

2022年蹦迪最火的十首歌《绿色》、《往后余生》、《一百万个可能》、《生僻字》、《沙漠骆驼》、《爱的就是你》、《小星星》、《红昭愿》、《芒种》、《像鱼》。1、《绿色》这首歌是陈雪凝自创,虽然歌词没有太多的修饰和词藻,但是听者通过声音可以感受到她那被伤害的心,触及内心深处,这首歌的人都希望陈雪凝以后可以会变得越来越好,越来越快乐。2、《往后余生》以前马良一直在抖音上翻唱别人的歌曲,被网友们吐槽,没有自己的作品,但是马良发布民谣《往后余生》后,一炮而红,获得许多人的钦佩3、《一百万个可能》ChristineWelch,优美的旋律,诗意的歌词,动听的声音,却出自这位外国演唱歌手,真让人意想不到。4、《生僻字》陈柯宇将许多生僻字标入到歌词,非常新颖,唱起来一点也不拗口,成为2019年最热歌曲之一。5、《沙漠骆驼》这首《沙漠骆驼》歌词写得非常好,强烈的表现出了对自然的渴望,表达出了许多现代人内心的渴望。6、《爱的就是你》《爱的就是你》是由刘佳作词作曲并演唱的歌曲,非常适合送给自己的另一半,词写得非常棒,旋律也恰到好处。7、《小星星》《小星星》是汪苏泷,听到声音美美的歌词,歌词的向往是许多女生所喜欢的恋爱的感觉。8、《红昭愿》《红昭愿》是由音阙诗听音乐社打造的一首古风歌曲,由许多中国乐器组合而成的节奏,不仅融入了中国文化,还融入了许多国外的流行元素,成为2019年抖音最热歌曲之一。9、《芒种》“一想到你我就空恨别梦久”这首歌叫做《芒种》,也是来自于音阙诗听的一首歌曲,不仅融入了中国文化,也融入了许多外国流行的元素,和《红昭愿》一类歌曲,成为2019年抖音最热歌曲之一。10、《像鱼》不仅在抖音上非常火。而且在网易云音乐和微博上也得到颇高的关注,是值得许多人听的歌曲,小编也非常喜欢。蹦迪“蹦迪”的场地有两种,一种是震动钢板,一种是木质地板。“蹦迪”时,人们在场地内自由自在地发挥,可一人蹦,也可几人同时蹦,随着节奏感极强的音乐,舒展全身筋骨。只要不到一会儿“蹦迪”的你便完全忘情地投入其中,再冷的天,也会蹦个大汗淋漓。“蹦迪”使你享受浑身释放后的一份舒坦和惬意。
2023-07-17 11:31:301

桌面上有macintosh hd的图标,如何去掉

(1)打开注册表编辑器.(开始-运行,输入regedit点确定按扭进入)(2)进入到注册表项打开根键HKEY_CLASSES_ROOT,在此根键下找到lnkfile项(3)在lnkfile子项下,有一个名为IsShortcut的项值,它表示在桌面上的.LNK快捷方式图标上将出现一个小箭头。右击IsShortcut,选择"删除"命令,将该键值删除。(4)关闭注册表,重新启动计算机.在登陆桌面后,会发现快捷方式图标上的小键头已经不见了。(5)使用腾讯电脑管家--清理缓存--查杀病毒程序--电脑诊所--桌面图标---、快捷方式显示未知--查看解决办法就可以了呢
2023-07-17 11:31:351

请帮我看一下这个是我们中国的什么时间?

西五区时间中国是东八区相差13个小时
2023-07-17 11:31:355

“吾”怎么念?

2023-07-17 11:31:3714

乌克兰首都乌克兰首都被俄罗斯占领了吗

1、乌克兰的首都2、基辅地理位置介绍是什么 基辅位置概述是什么3、基辅是哪个国家的首都4、基辅是什么国家的首都5、乌克兰首都叫什么6、乌克兰首都是哪?乌克兰的首都基辅。乌克兰首都是基辅乌克兰首都,位于乌克兰中北部。是一座历史悠久乌克兰首都的城市乌克兰首都,也是一座著名乌克兰首都的旅游城市。基辅地理位置介绍是什么 基辅位置概述是什么导语:基辅的基础设施建设完善,拥有地铁等便利的交通系统。基辅是苏联的第三大城市,战略地位十分重要。那么,基辅地理位置介绍是什么?基辅位置概述是什么?下面是我精心准备的内容希望对大家有所帮助! 基辅地理位置介绍 基辅地理位置位于第哥伯河与杰斯纳河交汇处,陆路水路和航空四通八达,既是苏联西南地区的交通要塞,也是德军夺取顿涅茨工业区和高加索油田的必经之路。 基辅是乌克兰的首都,经济、文化中心。位于第聂伯河中游两岸,及其最大支流普里皮亚季河与杰斯纳河汇合处附近。 基辅接近顿巴斯和第聂伯河沿岸钢铁基地,周围是富饶的农业区,机械制造业和轻工业发达。机械制造业门类较多,大多与运输业相联系,还有机床、仪器、化工和机械等。轻工业有照相机、食品、编织品等。化学工业和印刷出版业也很发达。是乌克兰的交通枢纽。东郊设有国际机场,河运直达黑海,市内建有地下铁道。 20世纪70年代初有工业职工35万,约占职工总数的五分之二。基辅交通发达,是水陆空交通枢纽,有铁路和公路通往莫斯科、哈尔科夫、顿巴斯、南乌克兰、敖德萨港、西乌克兰和波兰。第聂伯河的航运能力较高。鲍里斯波尔机场有航线通往独联体大部分大城市、乌克兰许多城镇以及罗马尼亚和保加利亚等国。市内汽车、电车交通方便,日载客量200余万人,还有地下铁道。基辅是东欧重要的工业、科学、文化及教育中心,也是许多高科技产业、高等教育机构和历史建筑的所在地。这座城市拥有广泛的基础设施和高度发达的公共交通系统,如基辅地铁。 乌克兰首都基辅 基辅是乌克兰的重要城市,也是著名的首都,近年来成为了许多亚洲人经常行走的目的地,基辅包括众多著名古迹,人们都会迫不期待的选择到此探索一番,基辅是一座现代化大都市,一般富裕的乌克兰人都青睐于居住在这里。 随着人们生活水平的提高,越来越多的人热爱走出国门,然后看看外面的世界,在选择旅游胜地的时候又会困扰不少中国男女,有的喜欢畅游亚洲,有的喜欢周游欧洲,意见不统一就很难得出最满意的结果,其实喜欢亚洲的就可以行走一遍泰国或越南,喜欢欧洲的就可以行走一遍俄罗斯或乌克兰,这些国家都是世界最热门的旅游地,相信走在其中不会让你失望。 女人过日子一般都热爱买东西,即使环游国外也一样,乌克兰女人平日就习惯和闺蜜出门在外,可一些人到基辅旅游,就比较好奇要了解乌克兰女人喜欢的出行方式,其实她们不太热爱选择乘坐交通工具出门,而是向往步行逛街。 作为首都基辅是繁华迷人的,国外男女到乌克兰旅游一般都会首选这里,想要体验一下乌克兰的风土人情,更有必要亲临一次基辅,在这里你会见到各式各样的女人,她们更热爱步行出门,对她们来说这种方式是最休闲的。 基辅历史 19世纪末,基辅因俄罗斯帝国的工业革命而再度兴起。基辅在经历1917年俄国革命引发的动荡时期后,自1921年起成为乌克兰苏维埃社会主义共和国的重要城市。 公元882年—公元911年奥列格征服了周围的斯拉夫人各部落公国和非斯拉夫人部落,形成以东斯拉夫人为主体的国家。斯拉夫人选择基辅作为首都的原因:在古代,基辅的环境和资源要比莫斯科优越,更适合人们生存和发展,而且基辅还是三条大河汇流之处,水路两便。 另外,令奥列格选择基辅的原因,还有政治上更重要的考虑,留里克去世后,奥列格成为了诺夫哥罗德王公,在诺夫哥罗德,王公的权利只局限于军事和司法方面,公国内的事务一概由公民大会决定。基辅是哪个国家的首都基辅(Kyiv, Киев)是乌克兰首都乌克兰首都,经济、文化、政治中心。地处乌克兰中北部乌克兰首都,第聂伯河中游两岸乌克兰首都,及其最大支流普里皮亚季河与杰斯纳河汇合处附近。19世纪末,基辅因俄罗斯帝国乌克兰首都的工业革命而再度兴起。基辅在经历1917年俄国革命引发乌克兰首都的动荡时期后,自1921年起成为乌克兰苏维埃社会主义共和国的重要城市。扩展资料公元882年—公元911年奥列格征服了周围的斯拉夫人各部落公国和非斯拉夫人部落,形成以东斯拉夫人为主体的国家。斯拉夫人选择基辅作为首都的原因:在古代,基辅的环境和资源要比莫斯科优越,更适合人们生存和发展,而且基辅还是三条大河汇流之处,水路两便。另外,令奥列格选择基辅的原因,还有政治上更重要的考虑,留里克去世后,奥列格成为了诺夫哥罗德王公,在诺夫哥罗德,王公的权利只局限于军事和司法方面,公国内的事务一概由公民大会决定。就像北魏孝文帝迁都洛阳方便改革一样,奥列格也是为了摆脱庞杂的既得利益集团,放手实施自己的雄图。基辅是什么国家的首都导语:基辅有许多著名的景点,如圣索菲亚大教堂、彼切尔洞窟修道院、卫国战争纪念馆、安德烈斜坡等等。那么,基辅是哪个国家的首都?基辅是什么国家的首都?下面是我精心准备的内容希望对大家有所帮助! 基辅是哪个国家的首都 基辅是乌克兰首都,经济、文化、政治中心。地处乌克兰中北部,第聂伯河中游两岸,及其最大支流普里皮亚季河与杰斯纳河汇合处附近。 乌克兰首都基辅市坐落在第聂伯的支流杰斯纳河和普里皮亚特河汇人第聂伯河的不远处,总面积780平方公里,人口约250万。 基辅是一座古老的城市,是“俄罗斯诸城之母”。早在6至7世纪,它就已是东斯拉夫人的重要城市之一。9世纪末,成为基辅罗斯国的首都。14至15世纪,形成了乌克兰部族,基辅始终是乌克兰人的政治和文化中心。1654年,乌克兰正式并人俄国后,基辅成为它西南名城和边睡重镇。1917年十月革命后,基辅又成为乌克兰苏维埃社会主义共和国的首都。1991年乌克兰独立,基辅成为独立国家的首都。 基辅的重工业在工业中占据主要地位,其煤炭,冶金,机械制造和化学工业构成了现代化经济的骨架。乌克兰土壤肥沃,农产品以粮食,甜菜,向日葵,葡萄,长纤维亚麻为主。 基辅是座绿色的城市 基辅被称为“绿之都”和“花园城市”。栗树是基辅的市树,在市内处处有栗树。庄重、肃穆的市徽的中间部位,就是一枚艺术化了的栗子树叶。 基辅市区沿第聂伯河延伸好几十公里。市内的建筑带有鲜明的乌克兰特色。这里不仅完好地保存着古罗斯卓越的建筑群—圣索非亚大教堂、基辅洞窟修道院、精致的安德烈耶夫教堂,而且还有许多新的高楼大厦。克列夏齐克大街是基辅的一条主要大街,这条林荫大街像一条绿色的带子穿过市中心,街北是国家和市政府机关,街南是住宅区,沿街还有装饰一新的店铺、音乐厅、咖啡馆等。 第聂伯河的右岸是旧城区,仍保留着旧街道的格局,绝大部分古建筑都在旧城。著名的圣索菲亚大教堂,坐落在第聂伯河岸陡崖上。它建于1037年,由希腊工匠建造而成。教堂用砖和石料砌成,布局严谨,气势雄伟,面积2035平方米。内有宽敞庄严的长廊,有13个十字的圆弯顶。主拱门为梯形结构,共面是双层绕廊,西面回廊有3座圆顶塔楼,有楼梯通往宽敞的唱诗厅。殿内保存有11-12世纪珍贵的镶嵌画和壁画。教堂及其周围有17-18世纪初修建和扩建的具有乌克兰民族风格的许多建筑,已于1934年划归国家历史建筑艺术保护区,称索菲亚博物馆。基辅洞窟修道院,坐落在基辅市第聂伯岸边景色秀丽、丘陵起伏的深谷中。大修道院以高达97米的钟楼为主体,由3处建筑群组成统一的布局。内有圣浸礼洞窟教堂、圣母降灵洞窟教堂、圣母升天大教堂,三位一体纳德弗拉特教堂、别列斯托沃救世主教堂等。修道院铁围墙居高临下,气势雄伟。 第聂伯河的左岸是新城区,主要是第二次世界大战以后发展起来的,是基辅的工业区。有机械制造、仪表制造、化学、制药、轻工、印刷、食品等工业门类。其中轻工业最发达,主要产品有照相机、食品、纺织品、手表等。此外基辅的工艺品刺绣、花色头巾,木制“套娃”等都享有很高的声誉。 基辅是乌克兰的文化中心。这里有许多博物馆、高等学校、图书馆、剧院以及科研机构等。其中舍甫琴科博物馆、乌克兰卫国战争史纪念馆、历史博物馆和艺术博物馆吸引着众多的人前来参观。乌克兰首都叫什么乌克兰首都叫基辅。基辅乌克兰首都:乌克兰首都乌克兰首都,经济、文化、政治乌克兰首都的中心。地处乌克兰中北部乌克兰首都,第聂伯河中游两岸乌克兰首都,及其最大支流普里皮亚季河与杰斯纳河汇合处附近。19世纪末,基辅因俄罗斯帝国的工业革命而再度兴起。基辅在经历1917年俄国革命引发的动荡时期后,自1921年起成为乌克兰苏维埃社会主义共和国的重要城市,1934年后成为首都。第二次世界大战期后快速的复原,成为苏联第三大城市。1991年苏联解体,乌克兰独立,基辅再次成为乌克兰首都。乌克兰首都是哪?乌克兰首都是基辅,地处乌克兰中北部、第聂伯河中游两岸及其最大支流普里皮亚季河与杰斯纳河汇合处附近,被誉为“罗斯众城之母”。它是东斯拉夫人建立的最古老城市,位于第聂伯河右岸一块高度约9米的台地,三面濒临陡峭悬崖,形势险峻。东斯拉夫人最早的编年史《往年纪事》(作于12世纪)记载了关于“基辅城”的由来:波良人部落首领三兄弟——基伊、塞克和霍里夫共同“建造城堡,以长兄的名字命名为基辅。”
2023-07-17 11:31:371

Lily是什么意思?

Lily的释义:1、英文名,中文:莉莉。2、百合。
2023-07-17 11:31:421

为什么出租车叫作“的士”!

跟之前我们常说的打的有关吧 我们这的方言
2023-07-17 11:31:448

DX4RKYC6FR9M是翻新机吗

苹果手机?百度苹果手机序列码查询,可以查询手机出厂日期,注册日期,型号,颜色等手机信息,去查一下吧
2023-07-17 11:31:222

lily的含义是什么

lily ["lili]基本翻译n. 百合花,百合;类似百合花的植物;洁白之物adj. 洁白的,纯洁的网络释义lily:百合|百合花|周 丽Lily Donaldson:丽丽·唐纳森|丽丽唐纳森|丽丽-唐纳森Madonna Lily:圣母百合|白百合|白百合花definition of Lilyn., pl., -ies.1.Any of various plants of the genus Lilium, having variously colored, often trumpet-shaped flowers.2.Any of various similar or related plants, such as the day lily or the water lily.3.he flower of any of these plants.
2023-07-17 11:31:211

乌克兰以前是苏联的吗

2023-07-17 11:31:219

macos monterey将安装在磁盘macintosh

macosmonterey将安装在磁盘macintosh如下首先进行备份在单独的卷上安装时,您不会冒太大的风险,但是,如果您真的想确保万无一失.2.创建卷如果您不想冒任何风险,最好将Monterey安装在硬盘驱动器/SSD上的3.安装Beta配置文件您需要一个Beta配置文件才能安装Beta。官方途径是.4.前往http://developer.apple.com并点击发现。
2023-07-17 11:31:181

口红的英文?

lipstick补口红touch up lipstick; renew lipstick擦掉口红remove lipstick
2023-07-17 11:31:1813

rky Force游戏第五关怎么打?

是SKY Force吧?躲避那个白球,实在躲不过被打中你就躲避子弹之类的就行,如果你是自己打的话很难。操作要求高。你可以在网上下金币存档。那样就简单了。不知道你喜不喜欢
2023-07-17 11:31:142

美国人正常用什么时间,

不像中国有统一的北京时间,美国有不同的时区(从东往西):东部时间(E=Eastern),中央时间(C=Central)、山地时间(M=Mountain),太平洋时间(P=Pacific),每时区之间相隔一小时。比如东部纽约比西部洛杉矶早3小时。除此以外,美国还有夏威夷时间,阿拉斯加时间。不像中国已经取消夏时制,美国仍然使用夏时制。因此美国时间分为标准时间(ST=Standard Time)和夏令时间(DT=Daylight Time).夏令时间比标准时间晚一小时。EST: Eastern Standard Time 东部标准时间CST: Central Standard Time 中央标准时间MST: Mountain Standard Time 山地标准时间PST: Pacific Standard Time 太平洋标准时间EDT: Eastern Daylight Time 东部夏令时间CDT: Central Daylight Time 中央夏令时间MDT: Mountain Daylight Time 山地夏令时间PDT: Pacific Daylight Time 太平洋夏令时间美国东部标准时间和北京时间晚12小时。北京时间5月14日早上6点,是美国东部标准时间5月13日下午6点。链接:http://www.worldtimezone.com/time-usa12.php
2023-07-17 11:31:013

城乡建设服务中心属于哪个部门?

建设部
2023-07-17 11:30:585