我在我的应用程序中使用GCM,并且每当收到GCM消息时都使用NotificationManager创建通知.现在一切正常,GCM消息在通知区域正确显示,但是当我点击通知时它应该启动一个活动我的应用程序将显示未发生的消息详细信息.每次我点击通知它都不会启动任何活动,它仍然保持原样.我创建通知的代码是:
private void sendNotification(String msg) {
SharedPreferences prefs = getSharedPreferences(
DataAccessServer.PREFS_NAME, MODE_PRIVATE);
mNotificationManager = (NotificationManager) this
.getSystemService(Context.NOTIFICATION_SERVICE);
Intent intent = new Intent(this, WarningDetails.class);
Bundle bundle = new Bundle();
bundle.putString("warning", msg);
bundle.putInt("warningId", NOTIFICATION_ID);
intent.putExtras(bundle);
// The stack builder object will contain an artificial back stack for
// the
// started Activity.
// This ensures that navigating backward from the Activity leads out of
// your application to the Home screen.
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack for the …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中使用了Navigation-Drawer.所以我用navigation_drawer layout创建了单个活动.当用户从导航抽屉菜单中选择菜单选项时,我正在使用片段来更改主要内容区域(@ + id/content_frame)数据.现在我的问题是我想在每个屏幕上显示admob广告.我可以使用片段来初始化广告布局并将其扩展到FrameLayout但我认为这不是一个好选项.他们是否可以使用该单一活动来初始化广告?
navigation_drawer.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- The navigation drawer -->
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/side_navigation_background"
android:cacheColorHint="#00000000"
android:choiceMode="singleChoice"
android:divider="@color/side_navigation_list_divider_color"
android:dividerHeight="1dp" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud) 在我的xml文件中,我有一个线性布局,其中包含用于显示图像的ViewPager和另一个包含用于选择图像的上一个和下一个按钮的线性布局.我的xml如下所示:
<?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.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" >
<Button
android:id="@+id/goto_first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="first" >
</Button>
<Button
android:id="@+id/goto_last"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="last" >
</Button>
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我的问题是ViewPager正在全屏显示,并且带有前一个下一个按钮的Linearlayout没有显示,因为没有空间来绘制此LinearLayout.
我正在使用Fragments来为ViewPager填充视图.进入ViewPager的片段视图的xml文件是:
<ImageView
android:id="@+id/ItemImage"
android:layout_width="320dp"
android:layout_height="180dp" />
<TextView
android:id="@+id/ItemText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|bottom"
android:layout_marginBottom="5dp"
android:textColor="#ffffffff"
android:textStyle="bold" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
渲染后我得到的输出是这样的:
1.image(覆盖45%的屏幕高度)2.
空白区域(覆盖45%的屏幕高度)
3.Textview(覆盖10%屏幕高度的其余部分)
我想要的输出是:
1.image(覆盖45%的屏幕高度)
2.Textview(覆盖10%的屏幕高度)
3.LinarLayout for Buttons(覆盖45%屏幕高度的其余部分)
我正在使用actionbarcompat为我的android项目并使用@style/Theme.AppCompat.Light.DarkActionBar我的基本主题.此操作栏中的溢出菜单默认为黑色背景,我想要更改为白色.我知道这可以覆盖popup widgetwith属性popupBackground但不是在我的案例中工作.我的样式文件有以下代码:
<style name="MyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="android:actionDropDownStyle">@style/MyActionBarDropDown</item>
<item name="android:popupMenuStyle">@style/PopupMenu</item>
</style>
<style name="PopupMenu" parent="@style/Widget.AppCompat.PopupMenu">
<item name="android:popupBackground">@drawable/menu_dropdown_panel_example</item>
<item name="popupBackground">@drawable/menu_dropdown_panel_example</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但上面的代码没有运行,因为它给我错误:找不到匹配给定名称的资源: attr'popupBackground'.SomeOne请帮我纠正上面的代码.
我使用几个纬度,经度点在谷歌地图上绘制了一个多边形.但是现在我需要在多边形的中心放置一个标记,我需要中心坐标.如何计算中心点.
以下是在地图上添加多边形的代码:
for (Warning w : warningsList) {
// Instantiates a new Polygon object and adds points
PolygonOptions rectOptions = new PolygonOptions();
List<PolyPoints> pp = w.getPolyPoints();
for (PolyPoints p : pp) {
rectOptions.add(new LatLng(Double.valueOf(p.getLatitude()),
Double.valueOf(p.getLongitude())));
}
mMap.addPolygon(rectOptions.strokeColor(Color.GREEN)
.fillColor(Color.RED).strokeWidth(STROKE_WIDTH));
}
Run Code Online (Sandbox Code Playgroud)
我发现了类似的问题已经得到解答,但是对于JavaScript Api.Is他们在我的情况下使用相同的解决方案吗?
我有一个contacts包含列的表名[ "id","name","age" ]。我需要按名称升序排列所有联系人。我为其编写了以下查询:
Select * from contacts order by name collate nocase asc;
Run Code Online (Sandbox Code Playgroud)
我从上面的查询得到的结果如下:
1. 11 | #ax Nene | 21
1. 21 | 123 Ray | 22
1. 33 | maxy Wel | 25
1. 41 | Max Vele | 23
1. 53 | Nam sing | 25
Run Code Online (Sandbox Code Playgroud)
上面的顺序很好,但我希望以特殊字符 [#、$ 或任何其他非字母] 开头的名称位于结果的底部而不是顶部。我应该在查询中修改哪些内容才能获得所需的结果。
注意:我正在使用 sqlite。
我正在使用支持库中的Android DrawerLayout来显示幻灯片菜单.我在DrawerLayout菜单中使用单个活动和5-6个片段来显示它们.但是我有一个小问题,"我如何检查当前哪个片段如果用户选择了与已经打开的片段对应的菜单项,则可见.目前它再次创建片段并显示不好的.点击菜单项时触发的功能是:
private void selectItem(int position) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
// Locate Position
switch (position) {
case 0:
ft.replace(R.id.content_frame, fragment1);
break;
case 1:
ft.replace(R.id.content_frame, fragment2);
break;
case 2:
ft.replace(R.id.content_frame, fragment3);
break;
}
ft.commit();
mDrawerList.setItemChecked(position, true);
// Close drawer
mDrawerLayout.closeDrawer(mDrawerList);
}
Run Code Online (Sandbox Code Playgroud)
如何检查所请求的片段是否已经打开,以便不再创建?他们的任何方法是通过FragmentManager检查吗?
我在我的片段中使用RecyclerView来显示带有Grid格式文本的图像,Recycler视图grid_item.xml如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.CardView
android:id="@id/card_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:layout_margin="@dimen/card_margin_grid"
card_view:cardCornerRadius="@dimen/card_album_radius">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@id/thumbnail"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:background="?selectableItemBackgroundBorderless"
android:clickable="true"
android:scaleType="fitCenter" />
<TextView
android:id="@id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/thumbnail"
android:layout_margin="@dimen/album_title_padding"
android:textColor="@color/album_title"
android:textSize="@dimen/album_title" />
</RelativeLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我使用适配器填充RecyclerView中的数据,其代码为:
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private ArrayList<Movie> movies;
private Context context;
public DataAdapter(Context context, ArrayList<Movie> movies) {
this.movies = movies;
this.context = context;
}
public void addItems(ArrayList<Movie> movies) {
this.movies.addAll(movies);
}
@Override
public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) …Run Code Online (Sandbox Code Playgroud) 我正在使用 Youtube data api v3 获取视频信息,如标题、观看次数和持续时间。持续时间值对我来说是新的,因为ISO8601 date我需要将其转换为可读格式,如 hh:mm:ss。持续时间可以有以下不同的值:
我可以使用Joda Time 库来解析该值并计算以秒为单位的持续时间,但该库的大小为 500kb,这会增加我不想要的应用程序的大小。
我正在尝试向Android应用程序中的列表视图添加过滤。它无法正常工作,因为在搜索框中写入3-4个字母后出现以下异常。
07-02 12:14:48.348: E/AndroidRuntime(22028): FATAL EXCEPTION: main
07-02 12:14:48.348: E/AndroidRuntime(22028): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
07-02 12:14:48.348: E/AndroidRuntime(22028): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
07-02 12:14:48.348: E/AndroidRuntime(22028): at java.util.ArrayList.get(ArrayList.java:304)
07-02 12:14:48.348: E/AndroidRuntime(22028): at android.widget.ArrayAdapter.getItem(ArrayAdapter.java:337)
07-02 12:14:48.348: E/AndroidRuntime(22028): at com.sphinx.indianrailways.adapters.CityAdapter.getView(CityAdapter.java:57)
07-02 12:14:48.348: E/AndroidRuntime(22028): at android.widget.AbsListView.obtainView(AbsListView.java:2143)
07-02 12:14:48.348: E/AndroidRuntime(22028): at android.widget.ListView.makeAndAddView(ListView.java:1831)
07-02 12:14:48.348: E/AndroidRuntime(22028): at android.widget.ListView.fillDown(ListView.java:674)
07-02 12:14:48.348: E/AndroidRuntime(22028): at android.widget.ListView.fillSpecific(ListView.java:1332)
07-02 12:14:48.348: E/AndroidRuntime(22028): at android.widget.ListView.layoutChildren(ListView.java:1630)
07-02 12:14:48.348: E/AndroidRuntime(22028): at android.widget.AbsListView.onLayout(AbsListView.java:1994)
07-02 12:14:48.348: E/AndroidRuntime(22028): at android.view.View.layout(View.java:14008)
07-02 12:14:48.348: E/AndroidRuntime(22028): at android.view.ViewGroup.layout(ViewGroup.java:4373)
07-02 12:14:48.348: E/AndroidRuntime(22028): …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我在列表视图中为每个项目附加了弹出菜单。当我们点击弹出菜单图标时,弹出菜单还有两个项目OnMenuItemClickListener。我已经在我的活动中实现了监听弹出菜单项点击,这工作正常。但问题是我如何知道列表项 ID(不是弹出菜单)菜单项 id) 当我单击任何列表视图项的弹出菜单图标时。弹出菜单代码如下:
public void showPopup(View v) {
PopupMenu popup = new PopupMenu(this, v);
popup.setOnMenuItemClickListener(this);
popup.inflate(R.menu.actions);
popup.show();
}
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_play:
return true;
default:
return false;
}
}
Run Code Online (Sandbox Code Playgroud) 我有两次,一个开始和一个停止时间,格式为05:00 (HH:MM).我需要两次之间的差异.假设如果开始时间是05:00,结束时间是15:20,那么我如何计算两个时间差,即10小时20分钟.我应该将它们转换为datetime对象并使用毫秒来获得时差,还是有更好的方法来做到这一点?
android ×10
java ×3
drawerlayout ×1
filtering ×1
popupmenu ×1
regex ×1
sql-order-by ×1
sqlite ×1
time ×1