我已经在我的应用程序中实现了材料设计,它在<Android 5上运行得很好但是当我尝试在Android 5.0及更高版本上运行时,我在我的logcat中得到以下内容.
FATAL EXCEPTION main
Process com.test.test, PID 3195
java.lang.RuntimeException Unable to start activity ComponentInfo{com.test.test/com.test.test.MainActivity} java.lang.RuntimeException A TaskDescription's primary color should be opaque
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java2360)
at android.app.ActivityThread.access$800(ActivityThread.java144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java1278)
at android.os.Handler.dispatchMessage(Handler.java102)
at android.os.Looper.loop(Looper.java135)
at android.app.ActivityThread.main(ActivityThread.java5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java694)
Caused by java.lang.RuntimeException A TaskDescription's primary color should be opaque
at android.app.ActivityManager$TaskDescription.<init>(ActivityManager.java536)
at android.app.Activity.onApplyThemeResource(Activity.java3677)
at android.view.ContextThemeWrapper.initializeTheme(ContextThemeWrapper.java140)
at android.view.ContextThemeWrapper.setTheme(ContextThemeWrapper.java85)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java2244)
... 10 more
Run Code Online (Sandbox Code Playgroud)
这是我的风格:
<resources>
<!--
Base application theme, dependent on API level. …Run Code Online (Sandbox Code Playgroud) 今天我花时间迁移到AppCompat库.除了我的SearchView,我已经成功设置了所有内容.
之前,它运行正常,但现在我nullPointerException在使用代码时不断获取
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
我到处寻找尝试为我的问题找到解决方案,但我找不到任何地方(我试过的那些不起作用).
任何指导都将受到赞赏,ty.
这是我打电话的地方:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
MenuItem searchItem = menu.findItem(R.id.search);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) MenuItemCompat
.getActionView(searchItem);
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getComponentName()));
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
这是菜单XML文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:compat="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res/android" >>
<item
android:id="@+id/about"
android:orderInCategory="3"
android:showAsAction="never"
android:title="@string/about"/>
<item
android:id="@+id/rate"
android:orderInCategory="2"
android:showAsAction="never"
android:title="@string/rate"/>
<item
android:id="@+id/search"
android:icon="@android:drawable/ic_menu_search"
android:orderInCategory="1"
app:actionViewClass="android.support.v7.widget.SearchView"
compat:showAsAction="ifRoom|collapseActionView">
</item>
Run Code Online (Sandbox Code Playgroud)
表现:
Run Code Online (Sandbox Code Playgroud)<activity android:name="com.stack.overflow.MainActivity" android:label="@string/app_name" android:launchMode="singleTop" android:theme="@style/Theme.AppCompat" > <meta-data android:name="android.app.default_searchable" android:resource="@xml/searchable" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.SEARCH" /> <category android:name="android.intent.category.LAUNCHER" /> …
我试图从我的Fragment类调用DialogFragment.我有一个ImageView,并希望在我设置的ImageView的onClickListener中调用我的DialogFragment类.
我在onClick中遇到错误,我设置的代码试图调用DialogFragment.
我在"show"上收到一条错误,说明"DialogFragment类型中的方法show(FragmentManager,String)不适用于参数(FragmentManager,String)",并且"new Instance"上的错误表明"方法newInstance()未定义MyDialogFragment类型"
这是我的代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
final View v = inflater.inflate(R.layout.image_detail_fragment,
container, false);
mImageView = (RecyclingImageView) v.findViewById(R.id.imageView);
mImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//Here
MyDialogFragment dialog = MyDialogFragment.newInstance();
dialog.show(getFragmentManager(), "fragmentDialog");
}
});
return v;
}
Run Code Online (Sandbox Code Playgroud)
DialogFragment类:
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
class MyDialogFragment extends DialogFragment {
Context mContext;
public MyDialogFragment() {
mContext = getActivity();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) { …Run Code Online (Sandbox Code Playgroud) 我一直试图弄清楚如何从Fragment中定义的菜单按钮刷新我的Fragment.
我在这里看过这个问题,但我希望有一个更详细的例子来说明我将如何实现这个目标.
任何帮助或指导将不胜感激,谢谢.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.clear_cache:
mImageFetcher.clearCache();
Toast.makeText(getActivity(), R.string.clear_cache_complete_toast,
Toast.LENGTH_SHORT).show();
break;
case R.id.random:
//Reload the fragment from here
getActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.gridView, new Fragment3())
.commit();
return true;
}
return super.onOptionsItemSelected(item);
Run Code Online (Sandbox Code Playgroud)
XML:
<activity
android:name="com.stackoverflow.question.ImageGridActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/AppTheme" >
</activity>
Run Code Online (Sandbox Code Playgroud)
崩溃:
12-04 09:48:27.636: E/AndroidRuntime(20461): FATAL EXCEPTION: main
12-04 09:48:27.636: E/AndroidRuntime(20461): java.lang.UnsupportedOperationException: addView(View) is not supported in AdapterView
12-04 09:48:27.636: E/AndroidRuntime(20461): at android.widget.AdapterView.addView(AdapterView.java:451)
12-04 09:48:27.636: E/AndroidRuntime(20461): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:938)
12-04 09:48:27.636: E/AndroidRuntime(20461): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) …Run Code Online (Sandbox Code Playgroud) 我正在使用Glide图像加载库,我在调整位图大小时遇到了问题.
使用以下代码时:
Glide.with(getActivity())
.load(images.get(i))
.asBitmap().centerCrop()
.into(new SimpleTarget<Bitmap>(1200, 1200) {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
}
});
Run Code Online (Sandbox Code Playgroud)
每个位图都会调整大小到指定的尺寸.因此,如果图像是400x300,它会升级到1200 x 1200,这是我不想要的.如何使图像小于指定的尺寸,它不会调整大小?
我正在指定尺寸,因为我希望每个大于指定尺寸的图像都要考虑到尺寸centerCrop; 然后如果图像小于指定的尺寸,我不希望它的大小调整.
我遇到一个问题,一旦用户点击我的ListView播放的声音,然后在播放声音时他们点击另一个声音,他们点击的2个声音同时播放.
我想获得当前播放的声音,完成,然后开始他们最近点击的新声音.
如果有人可以帮助我,那将非常感激!
码:
ListView BoardList = (ListView) findViewById(R.id.BoardList);
String List[] = {
"Audio1", "Audio2", "Audio3", "Audio4", "Audio5"
, "Audio6", "Audio7", "Audio8", "Audio9"
, "Audio10", "Audio11", "Audio12" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.listcustomize, R.id.textItem, List);
BoardList.setAdapter(adapter);
BoardList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
MediaPlayer mPlayer = null;
if (position == 0) {
mPlayer = MediaPlayer.create(HodgeMain.this,
R.raw.Audio1);
mPlayer.start();
}
if (position == 1) {
mPlayer = MediaPlayer.create(HodgeMain.this,
R.raw.Audio2);
mPlayer.start();
}
if (position == …Run Code Online (Sandbox Code Playgroud) 我一直试图让我的头脑绕过这几个小时.
我有一个主要的Fragment类,然后从我在该类中的ImageView设置的onClick,我启动一个带有简单的"是"或"取消"选项的Dialog Fragment.
我如何制作它,以便当用户点击"确定"时,它会将结果代码发送回我的主片段,告诉它运行一些代码(在我的情况下,我正在设置壁纸).
这听起来简单但似乎无法弄明白.提前致谢.
Onclick在哪里我想以某种方式将结果返回到:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.image_detail_fragment,
container, false);
mImageView = (RecyclingImageView) v.findViewById(R.id.imageView);
mImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
MyDialogFragment dialog = new MyDialogFragment();
dialog.show(getActivity().getFragmentManager(),
"MyDialogFragment");
}
public void onDialogOKPressed() {
((ImageDetailFragment) (DialogFragment.this.getParentFragment()))
.onDialogOKPressed();
dismiss();
}
});
return v;
}
Run Code Online (Sandbox Code Playgroud)
对话类:
class MyDialogFragment extends DialogFragment {
private Button ButtonOk;
private Button ButtonCancel;
public MyDialogFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, …Run Code Online (Sandbox Code Playgroud) 我不知道为什么我会收到此错误,5次我使用模拟器设置壁纸中的2次,我得到错误 - "资源是在附加的堆栈跟踪中获取但从未发布.请参阅java.io.Closeable for有关避免资源泄漏的信息."
当我使用手机设置壁纸时,它完美无误.当我使用模拟器时,为什么会崩溃?
这是我的代码:
public class SetWallpaperAsync extends AsyncTask<String, String, String> {
private Context context;
private ProgressDialog pDialog;
String image_url;
URL mImageUrl;
String myFileUrl1;
Bitmap bmImg = null;
public SetWallpaperAsync(Context context) {
this.context = context;
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
pDialog = new ProgressDialog(context);
pDialog.setMessage("Setting Wallpaper...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected String doInBackground(String... args) {
// TODO Auto-generated method stub
try {
mImageUrl = new URL(args[0]);
// myFileUrl1 = args[0]; …Run Code Online (Sandbox Code Playgroud) 我在我的片段中调用了我的View上的KeyEvent.KEYCODE_BACK,并且由于一些奇怪的原因它被调用了两次.
我不知道它为什么会这样做.
这是我的片段:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
myFragmentView = inflater.inflate(R.layout.folders, container, false);
myFragmentView.setFocusableInTouchMode(true);
myFragmentView.requestFocus();
myFragmentView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
String parent = file.getParent().toString();
file = new File(parent);
File list[] = file.listFiles();
myList.clear();
for (int i = 0; i < list.length; i++) {
myList.add(list[i].getName());
}
Toast.makeText(getActivity(), parent, Toast.LENGTH_LONG)
.show();
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, myList));
}
return true;
} …Run Code Online (Sandbox Code Playgroud) 我正试图OnItemClick从ListView我设置的声音中播放声音.
我收到错误" create(Context, int)类型中的方法MediaPlayer不适用于参数(new AdapterView.OnItemClickListener(){}, int)"带"创建"下划线.
不是100%肯定为什么我得到这个错误,如果有人可以提供帮助,将不胜感激.
ListView BoardList = (ListView) findViewById(R.id.BoardList);
BoardList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
String List[] = {"Play 1", "Play 2", "Play 3", "Play 4", "Play 5", "Play 6", "Play 7", "Play 8", "Play 9" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.listcustomize, R.id.textItem, List);
BoardList.setAdapter(adapter);
BoardList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position == 0) {
MediaPlayer mPlayer = MediaPlayer.create(this, R.raw.Audio1);
mPlayer .start();
} …Run Code Online (Sandbox Code Playgroud) android ×10
fragment ×2
media-player ×2
crash ×1
dialog ×1
inputstream ×1
listview ×1
refresh ×1
searchview ×1