我有一个非常奇怪的问题.我的逻辑很简单,我的应用程序使用NavigationDrawer主应用程序导航,由于可用选项的复杂性,我想使用一个ExpandableListViev嵌套一些导航项.
问题?也很简单:物品清单装在抽屉上; 然而,它们并没有扩展以展示孩子们.
问题是否有任何理由不扩展?我应该为此使用不同的UI小部件吗?
一些注意事项:我在不同的Activity上添加了相同的代码,但ExpandableListViev我没有在抽屉上托管它,而是将它添加到一个简单LinearLayout的唯一元素上,并且它在那里工作得很好.
我的活动布局:
<android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
<ExpandableListView
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@color/secondary_color_holo"/>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
活动代码:
private DrawerLayout mDrawerLayout;
private ExpandableListView mDrawerList;
private ExpandableDrawerAdapter mDrawerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ExpandableListView) findViewById(R.id.left_drawer);
    // set up the drawer's list view with items and click listener
    mDrawerAdapter = …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我想处理使用以下模式的链接:
scheme://host/folder1/folder2/folder3/folder4/article
我通过使用以下内容暂时让它工作:
<intent-filter>
    <data android:scheme="http" />
    <data android:host="www.laprensa.com.ni" />
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
但是,正如您可能想象的那样,打开任何以此开头的链接scheme://host,并且我想确保我只接收那些具有上述模式的页面,其中页面是主机内的4个文件夹.
另一个小问题是文件夹名称永远不会相同,因此我不能简单地使用android:path.值得注意的android:pathPrefix是,前三个文件夹与日期相关,因此不一样.
例如,网址是这样的:
scheme://host/year/month/day/articleType/article
我一直在阅读有关如何使用的文档和问题,android:pathPattern但我真的不明白我应该输入什么.
有任何想法吗?
谢谢!
编辑
根据建议,我试过:
android:pathPattern="/.*/.*/.*/.*/.*"
其中每个'.*'代表一个文件夹,但似乎仍然拿起其他不是文章的网址.例如,以下是两个不同的网址:
我想要处理的网址:
http://www.laprensa.com.ni/2013/05/10/vida/145996-lionel-richie-defiende-a
Run Code Online (Sandbox Code Playgroud)
网址我不想处理
http://www.laprensa.com.ni/2013/05/10/vida/
Run Code Online (Sandbox Code Playgroud)
我想这里的问题是它们都有相同数量的水平,唯一的区别是在最后一个之后实际上有一些东西'/',我可以尝试其他任何想法吗?我确实尝试添加一个,'/.*'但完全停止工作,应用程序停止处理任何链接期间:(
编辑
我添加了这一行:
getActivity().registerReceiver(new BroadcastReceiver(){...}, new IntentFilter(SENT));
Run Code Online (Sandbox Code Playgroud)
现在有一个运行时错误,错误如下:
09-03 04:12:41.856:E/AndroidRuntime(1692):java.lang.IllegalStateException:无法在视图类android.widget上的onClick处理程序的活动类android.view.ContextThemeWrapper中找到方法sendMessage(View). ID为"button_send"的ImageView
我的问题是:为什么要在android.view.ContextThemeWrapper中寻找方法?
该按钮是在我们在线引用的布局上创建的:
View view = inflater.inflate(R.layout.activity_composer, container);
Run Code Online (Sandbox Code Playgroud)
并且"button_send"的onClick方法设置为:
android:onClick="sendMessage"
Run Code Online (Sandbox Code Playgroud)
以后定义为:
public void sendMessage (View v) {
        String phoneNumber = number_input.getText().toString();
        String message = body_input.getText().toString();
        if(message.length() > 0) {              
            sendSMS(phoneNumber, message);
            }
        sendSMS(phoneNumber, message);
        clearForm();
    }
Run Code Online (Sandbox Code Playgroud)
单击发送消息的按钮时会发生运行时错误.
编辑结束
编辑第二
显然,您无法在XML中定义onClick方法,因为该按钮是片段的一部分.在这种情况下,我不得不设置一个onClickListener
问题FIXED,谢谢!
所以我试图创建一个只发送新短信的DialogFragment.Dialog有两个EditText视图,一个用于电话号码,另一个用于实际消息; 它还有1个ImageButton,它有一个名为sendMessage(View v)的onClick方法.话虽如此,我在注册接收器时遇到问题,以便在发送消息时捕获结果代码.错误消息是:
"方法registerReceiver(new BroadcastReceiver(){},IntentFilter)未定义为ComposerDialog类型"
使用完全相同的代码块,除了onCreateView()之外,我可以在Activity上进行此工作,但显然不在DialogFragment上.我的猜测是在线:
PendingIntent sentPI = PendingIntent.getBroadcast(getActivity(), 0,
                new Intent(SENT), 0);
Run Code Online (Sandbox Code Playgroud)
通过调用getActivity(),我传递一个Dialog作为上下文,显然这不是一个对registerReceiver的调用在线识别的参数:
registerReceiver(new BroadcastReceiver(){...}, new IntentFilter(SENT));
Run Code Online (Sandbox Code Playgroud)
我正在考虑如何更改我传递给registerReceiver调用的上下文,但我甚至不确定这实际上是问题.有任何想法吗?
这是完整的类,以获得更好的视角:
package com.deadpixels.test.sms;
import …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用刚刚发布的Android Studio,我已经为Android SDK建立了位置,并且Studio正确打开.
现在,我想创建一个新的应用程序项目,但我无法弄清楚要选择什么作为项目位置.
遵循的步骤:
我读了一个类似的问题,我确信,正如你所说的步骤所说的那样,我正在进入最后的道路,它仍然不适合我.
我真的觉得我在这里一定有一件愚蠢的事情,不知道它可能是什么.
有任何想法吗?
我有一个音乐服务,在后台处理音乐播放,还有一些其他的事情,如通知需要进行的UI更改活动,存储和恢复队列,通过光标获取歌曲记录,以及每个歌曲改变的时间,它负责更新正在进行的通知的位图.
问题是什么?该服务几乎在用户试图完成的任何时候崩溃.几乎任何其他事情.例如,播放一首歌,然后打开游戏会使服务崩溃,有时像浏览网页上的光线也会让它崩溃.
一些细节:
1  -服务是通过startService(new Intent(this, MyMusicService.class));  但是当用户离开活动时启动的,我打电话startForeground(mId, mNotification);来显示提供简单控制的持续通知,并且还因为startForeground()服务应该优先考虑因为activityManager杀死这些服务会破坏用户体验(如果服务被杀,音乐就会停止)
2 -我试图重现崩溃,当你做不那么繁重的工作时,肯定会发生这种情况,例如浏览chrome(这会在几乎50%的时间内重现崩溃),并且总是在做启动运行2时.仅供参考,如果没有做任何事情 - 只是在背景上播放音乐并且空闲,播放将根本不会停止,并且它的工作方式正如它所预期的那样.
3 -我用作测试设备的手机绝不是慢速或低内存设备,它是Galaxy Nexus.
4 -我试过捕捉一些长的,有时简单地说:
02-24 06:53:32.586: I/ActivityManager(387): Process com.deadpixels.light.player (pid 27720) has died.
Run Code Online (Sandbox Code Playgroud)
没有任何其他消息,有时相同的消息伴随着WINDEATH:
 02-24 06:53:32.586: W/ActivityManager(387): Scheduling restart of crashed service com.deadpixels.light.player/.service.MyMusicService in 5000ms
 02-24 06:53:32.602: W/InputDispatcher(387): channel '418d09c8    com.deadpixels.light.player/com.deadpixels.light.player.HomeActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
 02-24 06:53:32.602: E/InputDispatcher(387): channel '418d09c8 com.deadpixels.light.player/com.deadpixels.light.player.HomeActivity (server)' ~ …Run Code Online (Sandbox Code Playgroud) 我在一个片段中有一个ListView,它被添加为ViewPager中的选项卡。我希望用户能够通过简单地点击他们已经打开的选项卡(onTabReselected())来滚动“ backToTop” 。我已经有一个有效的代码可以做到这一点;但是,我使用的代码花费很长时间才能滚动回到位置0,这在小列表上非常整洁,但是在250首歌曲集中,它肯定会惹恼用户。
这是我的代码:
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
    switch (tab.getPosition()) {
    case 0:
        if (tab.getPosition() == mCurPagerItem) {
            final ListView list = (ListView) findViewById(android.R.id.list);
            list.smoothScrollToPosition(0);
        }
        break;
    case 1: 
        if (tab.getPosition() == mCurPagerItem) {
            final GridView list = (GridView) findViewById(R.id.artist_grid);
            list.smoothScrollToPosition(0);
        }
        break;
    case 2:
        if (tab.getPosition() == mCurPagerItem) {
            final ExpandableListView list = (ExpandableListView) findViewById(R.id.exp_list);
            list.smoothScrollToPosition(0);
        }
        break;
    default:
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)
由于不同的片段具有不同的“列表”类型,因此我在两个位置之间切换。就像我说的那样,这段代码确实可以很好地工作,但是有没有一种更快的滚动回顶部的方法?更即时的东西。
只是为了澄清一下,当我说它“花费太长时间”时,这是因为smoothScrollToPosition本身是一种在列表上滚动的慢速方法,应该使它看起来更好。
注意我确实尝试过:
list.scrollTo(0, 0);
Run Code Online (Sandbox Code Playgroud)
但这实际上似乎对listView的当前位置没有任何作用。我想这更多是一个View调用,一个ListView方法本身。
有任何想法吗?
我最近更新到最新的Android Studio版本(0.2.x),我遇到了无法构建项目的问题.我收到一条错误消息,指出:
Gradle: Execution failed for task ':TestApplication:compileDebug'.
Run Code Online (Sandbox Code Playgroud)
编译失败; 请参阅编译器错误输出以获取详细信 C:\用户\用户\ AndroidStudioProjects\TestApplicationProject\TestApplication \建立\源\ r \调试\ COM \示例\ testapplication\R.java
Gradle: error: illegal unicode escape
Run Code Online (Sandbox Code Playgroud)
现在,我知道我应该按照说明重新安装Android Studio:
Windows users: Do not install Android Studio 0.2.x in the same location as 0.1.x. 
Doing so may cause errors such as ClassCastException or other unexpected behaviors.
It's best if you remove your previous version of Android Studio 0.1.x.
Run Code Online (Sandbox Code Playgroud)
我实际上做了,我卸载了Android Studio,并删除了存储在以下位置的剩余文件夹(卸载后显然没有删除): C:\Users\user\AppData\Local\Android
然后我继续清理注册表项以防万一(我在第三次尝试后尝试了这个,但没有让它工作),并在重新安装之前重新启动.
PC重新启动后,我继续全新安装Android Studio,安装成功.我从头开始创建了一个测试项目(以确保打开以前的项目不是问题),但是在打开项目之后,它已经显示了构建问题.我尝试运行它,它根本无法编译.
更奇怪的是,根据编译器输出的所有有问题的行都是R.java 中的注释行.这是一个:
        /**  From: C:\Users\user\AndroidStudioProjects\TestApplicationProject\TestApplication\src\main\res\values\dimens.xml 
Run Code Online (Sandbox Code Playgroud)
和它指向该行,这是右之间的字符30 ù …
WebView我的应用程序中有一个显示从网页下载的HTML数据.为什么我只加载HTML而不是URL?好吧,为了让我允许离线搜索,我下载HTML数据并将其存储在SQL数据库中.
一切运行良好,后续调用loadDataWithBaseUrl()工作正常,并继续正确加载我的WebView,但每当用户按下后退键时,用户只是回到堆栈上的最后一个活动,而不是返回.
我尝试使用以下代码:
// Check if the key event was the Back button and if there's history
if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
    myWebView.goBack();
    return true;
}
Run Code Online (Sandbox Code Playgroud)
但后来我试图强迫WebView它回去,而不检查它是否可以,通过:
// Check if the key event was the Back button and if there's history
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
    myWebView.goBack();
    return true;
}
Run Code Online (Sandbox Code Playgroud)
但没有任何反应,只是停留在同一个地方.
作为一个FYI,我null在调用时尝试传递和实际的URL loadData(),这是我现在设置的方式:
view.loadDataWithBaseURL(mUrl, mHtmlData, SearchUtils.MIME_TYPE, SearchUtils.CHARSET, "");
Run Code Online (Sandbox Code Playgroud)
我读了这个答案,但我希望能有更好的运气.
我正在使用搜索小部件在我的应用程序上实现搜索界面.我不打算支持任何API等级<11(Honeycomb).在搜索活动中,我想覆盖onKeyDown()以在用户按下搜索键时展开搜索小部件,并在提交查询文本时将其最小化.
这很容易通过调用:
@Override
public boolean onSearchRequested() {
    if (mSearchMenuItem != null) {
        mSearchMenuItem.expandActionView();
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)
并在提交查询时:
searchView.setOnQueryTextListener(new OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            //Do nothing, results for the string supplied are already shown.
            //Just collapse search widget
            mSearchMenu.collapseActionView();
            return false;
        }
        @Override
        public boolean onQueryTextChange(String newText) {
            //do other stuff
             return false;
    });
Run Code Online (Sandbox Code Playgroud)
问题是崩溃和扩展都是在API级别14中引入的.如前所述,我希望尽可能提供API级别11的支持,而且我无法在不调用新的API方法的情况下实现相同的功能.
我试过了:
@Override
public boolean onSearchRequested() {
    searchView.setIconifiedByDefault(false);
    //and also called
    searchView.requestFocusFromTouch();
}
Run Code Online (Sandbox Code Playgroud)
但这根本就没有做任何事情(我所说的任何事情,如果已经存在,则searchwidget仍然会崩溃.
由于我保留了对menuItem的引用,我也尝试过:
@Override
public boolean onSearchRequested() …Run Code Online (Sandbox Code Playgroud) 我有一个目前只有英文的网站.但是,我们有一个Google翻译小部件,可将网站翻译为用户选择的任何语言.这是小片段:
<div id="google_translate_element"></div>
<script type="text/javascript">
function googleTranslateElementInit() {
    new google.translate.TranslateElement(
     {  pageLanguage: 'en', 
        layout: google.translate.TranslateElement.InlineLayout.SIMPLE
     }, 'google_translate_element');
}
</script>
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
Run Code Online (Sandbox Code Playgroud)
现在,我将把一些来自西班牙语用户的流量路由到该站点.考虑到我知道这些是讲西班牙语的用户,我可以在代码上自动将网站翻译成西班牙语(即模拟用户在翻译上选择给定选项)吗?我将使用特定的URL参数,例如lang = spa.
我尝试浏览加载DIV时插入的代码,但它甚至只是一个非常混乱的代码.
有没有人试过这样的东西,你能提供一个代码位来跟进吗?
谢谢.
所以想象一下这是我的数据库的快速模型:

数据库中的项目按列表呈现给用户,每个列表都显示在一个新片段上,这些片段显示在视图页面上。因此,假设在这种假设情况下,viewpager 上将有两个片段,第一个片段将显示first_list,第二个片段将显示second_list。这是该查询的代码:
 public static Cursor getListItems (final Context context, String listName) {
    if (mDatabase == null || !mDatabase.isOpen())
        open(context);  //This gets the writable db.
    String where = LIST_NAME + " = '" + listName + "'";
    return mDatabase.query(TABLE_LIST_ITEMS, PROJECTION_LIST_ITEMS, 
    where, null, null, null, SORT_ORDER);
}
Run Code Online (Sandbox Code Playgroud)
哪里SORT_ORDER是order_in_list,这个效果很好,与开始。
现在,列表视图可以使用 public library重新排列,它试图允许用户控制每个列表中项目的顺序。这是我遇到问题的地方,没有add(int index, Object object)光标,或者其他一些管理排序的简单方法。我一开始以为我可以简单地调用mDatabase.update()更改值,order_in_list但这有效,但结果并不如预期。例如,用户将第二项拖动到零位置,请记住:零索引值,我们现在有两个order_in_list为零的项目。虽然我可以叫mDatabase.update()上项目一个更新他的位置,一个 …
所以我甚至无法开始编写我想要构建的应用程序,我很难为我设置基于它的代码.
这是我做的:
问题肯定是在第4步,因为我在Eclipse Problems记录器上遇到以下错误:
a)描述资源路径位置类型容器'Android Dependencies'引用非现有库'F:\ Users\Desktop_1\Android\Facebook SDK\facebook-android-sdk\facebook\bin\facebook.jar'Test-Facebook Build path Build路径问题
b)描述资源路径位置类型新的View.OnClickListener(){}类型的onClick(View)方法必须覆盖超类方法FbDialog.java/facebook/src/com/facebook/android line 101 Java问题
c)描述资源路径位置类型Facebook.TokenRefreshServiceConnection类型的onServiceConnected(ComponentName,IBinder)方法必须覆盖超类方法Facebook.java/facebook/src/com/facebook/android line 575 Java问题
d)描述资源路径位置类型Facebook.TokenRefreshServiceConnection类型的onServiceDisconnected(ComponentName)方法必须覆盖超类方法Facebook.java/facebook/src/com/facebook/android line 581 Java问题
e)描述资源路径位置类型在解决构建路径错误之前,无法构建项目Test-Facebook Unknown Java Problem
主要问题是a和e,因为如果构建路径存在问题,则无法构建项目.通过从所有三行中删除"@override"注释,可以很容易地解决问题b到d; 但是,我不确定这是否是实际修复,因为SDK首先应该没有问题,并且删除注释可能最终无法使其工作.
关于我可以尝试的任何想法?我已经删除了整个SDK下载,并且已经多次重新克隆了存储库,即使在不同的文件夹上也是如此.不确定了,我不知道为什么教程中的截图看起来与我的日食不同.我的猜测是教程稍微过时,因为它仍然使用Froyo作为目标:P
任何帮助表示赞赏.
所以我想这是一个简单的使用getText()来检索信息:)
结果如下:
public void getToast(View v) {
    EditText et = (EditText) findViewById(R.id.userText);
    String toastText = et.getText().toString();
    if (toastText == "" || toastText == null) {
        Toast.makeText(this, "This is a nice toast!", Toast.LENGTH_SHORT).show();   
    }
    else {
    Toast.makeText(this, toastText, Toast.LENGTH_SHORT).show();
    }
}
Run Code Online (Sandbox Code Playgroud)
我在主布局文件上创建了一个EditText View.这是使用userText标识符引用的.由于它是一个EditText字段,用户可以随时修改其中的文本; 我想要完成的是检索用户在点击标识为getToast的按钮时输入的文本,然后将其显示为Toast.
我现在正在使用Resources类(我的第一个猜测?)来检索存储在toastText下的String,但是这是无用的,因为它正在提取存储在main.xml中的文本 - 这是空的,因为我声明没有"android :text"该视图的属性,而不是我使用"android:hint"告诉用户输入文本.
我读过有关意图的内容,但如果我要将字符串发送到另一个活动,而不是同一个活动,那就有意义了.我曾经认为这是一项简单的任务,但是我有更多的时间,我有希望:P
BTW:
该getToast方法被定义为"机器人:OnClickMethod"用于在XML中创建的按钮.它可以与任何其他文本字符串一起使用.
有任何想法吗?
package com.testlabs.one;
import android.app.Activity;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class initialui extends Activity { …Run Code Online (Sandbox Code Playgroud)