标签: extra

在Android中使用Bundle而不是直接Intent putExtra()的优点

在我的android应用程序中,我总是使用类的直接putExtra()函数Intent将任意数量的值传递给new Activity.
像这样:

Intent i = new Intent(this, MyActivity.class);
i.putExtra(ID_EXTRA1, "1");
i.putExtra(ID_EXTRA2, "111");
startActivity(i);
Run Code Online (Sandbox Code Playgroud)

Bundle在Android中知道,我看到人们正在使用Bundle将值传递给新的Activity.
像这样:

Intent intent = new Intent(this, MyActivity.class);
Bundle extras = new Bundle();
extras.putString("EXTRA_USERNAME","my_username");
extras.putString("EXTRA_PASSWORD","my_password");
intent.putExtras(extras);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

在这里,我有两个疑问.如果我可以直接将值传递给new ,我
为什么要使用? 使用而不是直接使用有什么好处?BundleActivityIntent
BundleIntent putExtra()

android bundle android-intent extra android-activity

73
推荐指数
4
解决办法
4万
查看次数

为模型表格额外字段指定小部件(Django)

我必须在我的模型表单中添加额外的字段.我的方法是:

class MyForm(forms.ModelForm):
    extra_field = forms.CharField()
    class Meta:
        model = MyModel
        widgets = {
            #Does not work
            'extra_field': forms.Textarea(attrs={'placeholder': u'Bla bla'}),
        }
Run Code Online (Sandbox Code Playgroud)

但似乎忽略了extra_fieldat的widget定义class Meta,因为我在模板上有一个裸输入标记而不是textarea.所以我申请下一个方法:

class MyForm(forms.ModelForm):
    #It works fine
    extra_field = forms.CharField(widget=forms.Textarea())
    class Meta:
        model = MyModel
Run Code Online (Sandbox Code Playgroud)

它对我来说很完美,但我曾经在class Meta声明时为表单字段指定小部件.所以我想知道:

为什么我的第一种方法不起作用?我做错了什么?

python django django-forms extra

23
推荐指数
1
解决办法
2万
查看次数

Gradle额外属性在子项目中定义的自定义任务中不可见

我正在尝试在多个Gradle任务中重用通用逻辑,类似于本答案中建议的,但是我遇到了额外的项目属性不可见的问题.

归结起来,这就是问题所在.假设我有一个根Gradle构建脚本,build.gradle它设置了一个额外的项目属性,

project.ext.myProp = 'myValue'
Run Code Online (Sandbox Code Playgroud)

我有一个子项目settings.gradle,

include 'subproject'
Run Code Online (Sandbox Code Playgroud)

子项目定义并使用引用该额外项目属性的自定义任务,

class CustomTask extends DefaultTask {
    CustomTask() {
        doFirst {
            println project.ext.myProp
        }
    }
}

task custom(type: CustomTask) {
    println 'custom task'
}
Run Code Online (Sandbox Code Playgroud)

执行这个给了我这个:

FAILURE: Build failed with an exception.
...
* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating project ':subproject'.
...
Caused by: org.gradle.api.tasks.TaskInstantiationException: Could not create task of type 'CustomTask'.
...
Caused by: groovy.lang.MissingPropertyException: cannot get property 'myProp' on extra properties extension as it …
Run Code Online (Sandbox Code Playgroud)

properties task gradle extra

18
推荐指数
1
解决办法
2万
查看次数

显示Email Intent中预先填写的收件人地址?

在此输入图像描述我无法将电子邮件客户端中的TO字段预先填写到此处附加内容中提到的"到"地址:

EmailImage.setOnClickListener(new OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                 // TODO Auto-generated method stub  
                Intent it = new Intent(Intent.ACTION_SEND_MULTIPLE);   
                it.putExtra(Intent.EXTRA_EMAIL, "toaddress@gmail.com");   
                it.putExtra(Intent.EXTRA_SUBJECT, "Regarding Policy Info");  
                it.putExtra(Intent.EXTRA_TEXT, "When is my next Premium due");  
                //it.setType("text/plain");   
                it.setType("message/rfc822");  
                startActivity(it);   
            }  
        });  
Run Code Online (Sandbox Code Playgroud)

问题是什么?

谢谢
Sneha

email android android-intent extra

13
推荐指数
2
解决办法
8970
查看次数

5px额外保证金被添加到每个div的底部

我正在尝试在css中为页面设计一个简单的标题.我计划将两个div叠加在一起.顶部有一个标签,底部是一个简单的单个图像div.但是在渲染时我发现额外的5px被添加到这两个div的高度.所以我无法将底部正好放在另一个底部.

自动存在5px的底部保证金.我尝试了负边距,将全局边距和填充重置为零.仍然没有用.

继承人的代码.

<div class ="main_nav">
 <div class="first_tab">
 <img src ="images/startup/tab1_brown.png" height="25" width="90" alt="Temp" /> 
 </div>
 <div class = "ind_tab">
 <img src ="images/startup/tab1_orange.png" height="25" width="90" alt="Temp"/>
 </div>
 <div class = "ind_tab">
 <img src ="images/startup/tab1_brown.png" height="25" width="90" alt="Temp" />
 </div>
</div>
<div class="lock">
 <img src ="images/startup/divbg_new.png" alt="Temp" />
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

 *{ margin:0; padding:0; }
ul.master_navigation
{
    font-size: 125%;
    font-weight: bold;
    text-align: center;
    list-style: none;
    margin: 0.5em 0;
    padding: 0;
}

ul.master_navigation li
{
    display: inline-block;
    padding: 0 1%;
}

a
{ …
Run Code Online (Sandbox Code Playgroud)

html css margin extra

12
推荐指数
4
解决办法
2万
查看次数

Django注释在字段上添加了额外的

我正在尝试找到一种方法来对添加在一起的模型上的两个字段进行注释.就像是:

total_done = qs.values(
    'ability__ability_name',
).extra(
    select={
        'total_amount': 'effective_value + overage',
    }
).annotate(
    total=Sum('total_amount'),
).values(
    'ability__ability_name', 'total_amount'
).order_by('-total_amount')
Run Code Online (Sandbox Code Playgroud)

以上不起作用并产生错误"无法将关键字'total_amount'解析为字段"我已经尝试过此处指示的解决方案:对使用.extra(select = {...})引入的值使用.aggregate()一个Django查询? 然而,没有运气仍然得到"无法解析关键字'total_amount'到字段"

除了在原始sql中执行查询之外的任何其他内容都可以使用各种过滤器,并且已经对其进行了排除,使得该前景变得有点复杂.我也试图避免将字段添加到实际模型中并在保存期间计算它的值,除非这是唯一的方法.

django annotations aggregation extra

11
推荐指数
1
解决办法
6128
查看次数

Android - 通过put/getExtra启动带有额外信息的服务

我真的试图通过intent.putExtra()和getIntent().getExtras()并将它们应用到SimpleService教程之一.我知道很多人已经问过"为什么捆绑附加内容总是为空?" 我保证我试图通过我发现这里几个小时,我考虑在发布前的答案破解,但我不认为我不够先进,以真正了解它是什么,我必须做错误的未成年人片段张贴.因此,我输入了我的活动和服务的完整代码.

我认为我的问题是我的开始意图(我在我的活动中创建的那个)在我的服务环境中不存在.我想知道我是否完全在错误的方向/目的上使用Intents?我在我的服务中尝试了一个intent.putExtra,尝试向另一个方向发送一个字符串,但这些额外的东西也总是为空.所以冒着重复的风险,为什么捆绑附加内容总是为空?如何在我的活动和服务的上下文中创建一个单一的意图?

我应该注意下面显示的代码显然会有一个空的额外内容,因为我已经注释了一些失败的.getExtras()尝试.我为了清洁而删除了其余部分.

编辑:答案归功于回复,在代码中为了那些也被谷歌搜索了几个小时的人.把这个放在你的服务中(请注意返回START_REDELIVER_INTENT可能是错误的):

@Override
public int onStartCommand( Intent intent , int flags , int startId )
{
      super.onStartCommand(intent, flags , startId);

      extras = intent.getExtras();

          //just checking
      if( extras != null )
      Toast.makeText(this,extras.getString("extratoservice"), Toast.LENGTH_SHORT).show();

      return START_REDELIVER_INTENT;

}
Run Code Online (Sandbox Code Playgroud)

我的活动(基于Sai Geetha的博客):

package com.example.BroadcastIntent;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class BroadcastIntentActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button …
Run Code Online (Sandbox Code Playgroud)

service android android-intent extra

10
推荐指数
1
解决办法
2万
查看次数

我可以故意发送课程吗?

我正试图通过额外传递类名,怎么做?

Intent p = new Intent(StartScreen.this, Setting.class);
p.putExtra(" ",StartScreen.this);
Run Code Online (Sandbox Code Playgroud)

我想在Setting类中获取类名,但我不希望它是String因为我将使用这样的类名:

Bundle extras = getIntent().getExtras();
extras.getString("class");
Intent i = new Intent(Setting.this, class);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)

java class setting android-intent extra

10
推荐指数
2
解决办法
8961
查看次数

展开时删除Android SearchView填充

我正在尝试在我的Android应用程序中实现SearchView,但在扩展它时会有额外的填充.

SearchView集成在菜单中,当应用程序启动时,我在工具栏中有一个搜索图标.当我单击该搜索按钮时,SearchView会扩展,但有一个额外的填充.

以下是一些照片,以便您了解问题:

这是初始工具栏 初始工具栏

当我点击搜索图标时,这就是我得到的扩展搜索

我找到了一个解决方案,在SearchView中添加一个负左边填充(-16dp): searchView.setPadding(getResources().getDimensionPixelSize(R.dimen.search_view_minus), 0, 0, 0);

不幸的是,如果我使用此解决方案,工具栏右侧的搜索图标将受到影响(不知何故,SearchView会越过搜索图标).

这是我的菜单:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">

    <item
        android:id="@+id/action_search"
        android:icon="@drawable/ic_search_white_48dp"
        app:showAsAction="always"
        app:actionViewClass="android.support.v7.widget.SearchView"
        android:title="Cauta..."/>

</menu>
Run Code Online (Sandbox Code Playgroud)

这是我的工具栏布局:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar_home"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimary"
    app:theme="@style/AppTheme.Title"
    app:titleMarginStart="0dp"
    app:navigationIcon="@drawable/ic_menu_white_24dp"
    app:contentInsetStartWithNavigation="0dp"
    app:contentInsetEndWithActions="0dp"
    app:contentInsetStart="0dp"
    app:contentInsetEnd="0dp" />
Run Code Online (Sandbox Code Playgroud)

这是应用于SearchView的一些自定义样式:

<style name="searchStyle" parent="Widget.AppCompat.SearchView.ActionBar">
    <item name="queryHint">@string/search_hint</item>
    <item name="searchIcon">@drawable/ic_search_white_24dp</item>
    <item name="voiceIcon">@drawable/ic_keyboard_voice_white_24dp</item>
    <item name="android:textColorHint">@android:color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我的问题有适当的解决方案吗?

android padding extra searchview

9
推荐指数
0
解决办法
2034
查看次数

在Django中的ValuesQuerySet上使用extra()

我正在尝试用两个本身聚合的值来计算百分比.解释我所追求的SQL查询如下:

SELECT (SUM(field_a) / SUM(field_b) * 100) AS percent
FROM myapp_mymodel 
GROUP BY id
ORDER BY id
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下内容来构造QuerySet,但不幸的是它不包含额外的字段:

MyModel.objects.values('id').annotate(
   sum_field_a=Sum('field_a'),
   sum_field_b=Sum('field_b')).extra(
      select={'percent': 'sum_field_a / sum_field_b * 100'})
Run Code Online (Sandbox Code Playgroud)

令我恼火的是 - 根据Django文档 - 这似乎是要走的路:

当values()子句用于约束结果集[...]中返回的列而不是为原始QuerySet中的每个结果返回带注释的结果时,原始结果将根据指定字段的唯一组合进行分组在values()子句中.然后为每个唯一组提供注释; 注释是在组的所有成员上计算的.

资料来源: http ://docs.djangoproject.com/en/dev/topics/db/aggregation/#values

如果在extra()子句之后使用values()子句,则extra()中的select参数定义的任何字段都必须显式包含在values()子句中.但是,如果在values()之后使用extra()子句,则select将添加的字段将自动包含在内.

资料来源: http ://docs.djangoproject.com/en/dev/ref/models/querysets/#values

sql django django-queryset extra

8
推荐指数
1
解决办法
5467
查看次数