Androidx Preference 库提供了两个用于在“设置”屏幕中实现 SwitchPreference 的类:
在撰写此问题时,AOSP 源代码中的两种实现(AOSP Androidx SwitchPreference和AOSP Androidx SwitchPreferenceCompat)看起来几乎相同,除了一些syleables等之外......
所以我的问题是,考虑到与其实现的未来可能发生的变化的兼容性,我们必须使用哪一个
我现在想知道使用 @SuppressLint("RestrictedApi") 注释是否安全。我很确定答案是否定的,所以我也想问为什么。
我猜开发团队想restricted code向 API 用户隐藏这些内容。可能是由于未来的变化或者因为代码旨在用作内部功能
示例代码androidx.preference:preference:1.1.1:
public abstract class CustomAdapterPreferenceFragment extends PreferenceFragmentCompat {
@Override
protected PreferenceGroupAdapter onCreateAdapter(PreferenceScreen preferenceScreen) {
// this annotation removes warning that says PreferenceGroupAdapter can only be called from package names that start with androidx.preference
@SuppressLint("RestrictedApi")
final PreferenceGroupAdapter adapter = new PreferenceGroupAdapter(preferenceScreen) {
@Override
public void onBindViewHolder(PreferenceViewHolder holder, int position) {
super.onBindViewHolder(holder, position);
}
};
return adapter;
}
Run Code Online (Sandbox Code Playgroud)
链接到限制本示例中代码使用的注释:AOSP AndroidX
我在SherlockListActivity中将Action功能添加到Action Bar但是,当我尝试实例化SearchView时,它始终为null:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.activity_main_menu, menu);
SearchView searchView = (SearchView) menu.findItem(R.id.activity_main_menu_search).getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){
public boolean onQueryTextSubmit(String p1){
List<Application> auxList = Search.search(mContext, p1);
AdapterApp aux = new AdapterApp(mContext, auxList);
setListAdapter(aux);
getListView().setOnItemClickListener(aux.getItemClickListener());
return true;
}
public boolean onQueryTextChange(String p1){
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
activity_main_menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/activity_main_menu_search"
android:title="@string/search"
android:icon="@android:drawable/ic_menu_search"
android:showAsAction="ifRoom|collapseActionView"
android:actionViewClass="com.actionbarsherlock.widget.SearchView " />
<item android:id="@+id/activity_main_menu_purchase"
android:title="@string/purchase"
android:icon="@drawable/ic_launcher_market_holo"
android:showAsAction="ifRoom|collapseActionView" />
</menu>
Run Code Online (Sandbox Code Playgroud)
另外我要说我已正确导入所需的类:
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.OnNavigationListener;
import com.actionbarsherlock.app.SherlockListActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem; …Run Code Online (Sandbox Code Playgroud) 假设我们已经下载、构建并刷新了 AOSP 源代码。现在对系统应用程序进行了更改(例如更改了packages/apps/Nfc 包中的常量)。
下一步是构建它,有两种方法可以实现:
cd packages/apps/Nfc; mm
Run Code Online (Sandbox Code Playgroud)
或者
mmm Nfc
Run Code Online (Sandbox Code Playgroud)
这将创建 out/target/product//system/app/NfcNci/NfcNci.apk 文件
更新系统应用程序的正确方法是什么?
我尝试使用adb install NfcNci.apk但没有成功:
~/android/aosp-7.1.2-3.10-v2/out/target/product/kugo/system/app/NfcNci$ adb install NfcNci.apk
Failed to install NfcNci.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install com.android.nfcnci without first uninstalling.]
~/android/aosp-7.1.2-3.10-v2/out/target/product/kugo/system/app/NfcNci$ adb install -r NfcNci.apk
Failed to install NfcNci.apk: Failure [INSTALL_FAILED_INVALID_APK: Package couldn't be installed in /data/app/com.android.nfcnci-1: Package /data/app/com.android.nfcnci-1/base.apk code is missing]
Run Code Online (Sandbox Code Playgroud) 如何为调色板的样本添加透明度值?就像我将颜色(swatch.getRGB())添加到线性布局一样,它显示纯色.而且我不想使用alpha,因为它会使布局中的其他项目也变得透明.
我的代码片段:
Palette palette = Palette.from(myBitmap).generate();
Palette.Swatch swatch1 = palette.getDarkVibrantSwatch();
int color = swatch1.getRgb();
thatLayout.setBackgroundColor(color)
Run Code Online (Sandbox Code Playgroud) 首先我要说的是,我已经花了两周时间对此进行研究,但没有找到答案......
我有一个TextView,所以我想要做的是用任何硬件按键的键码改变它的文本(是的,我知道一些按键不能使用)...问题是文本doest想要改变..有人请帮我解决这个问题.
非常感谢!!!
码:
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.TextView;
public class keycodelistener extends Activity {
private TextView txtcode;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.keycodedialog);
txtcode = (TextView)findViewById(R.id.keypresstext);
}
public boolean onKeyDown(View v, int keyCode, KeyEvent event) {
txtcode.setText(String.valueOf(keyCode));
return super.onKeyDown(keyCode, event);
}
}
Run Code Online (Sandbox Code Playgroud)
最后,感谢@CFlex !!! 最后三行必须是:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Log.e("","yeeeahhhh");
txtcode.setText(String.valueOf(keyCode));
return true;
}
Run Code Online (Sandbox Code Playgroud)