小编Max*_*xim的帖子

根据请求从MVC web api返回xml或json

鉴于以下webapiconfig;

config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
Run Code Online (Sandbox Code Playgroud)

和这个控制器;

  public class ProductsController : ApiController
    {
         Product[] _products = new Product[] 
        { 
            new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, 
            new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, 
            new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } 
        };

        public IEnumerable<Product> GetAllProducts() …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asp.net-mvc-routing wcf-web-api asp.net-web-api

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

如何将应用程序的快捷方式添加到主屏幕

我知道它没有记录,也不适用于所有设备,但我看到越来越多的应用程序在安装后将其快捷方式放在主屏幕上.发现一堆代码块如何做到但对我来说它们并不适合.这就是我现在所得到的.

  1. 需要清单中的权限.

    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建应该调用的活动的Intent.Ex(来自cgeek):

    Intent shortcutIntent = new Intent();
    shortcutIntent.setClassName("com.example.androidapp", "SampleIntent");
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建快捷方式

    Intent addIntent = new Intent();
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Shortcut Name");
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.icon));
    addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    context.sendBroadcast(addIntent);
    
    Run Code Online (Sandbox Code Playgroud)

我的问题是:在安装.apk后,这段代码应该去哪里添加快捷方式?我在启动器活动中尝试了此代码,每次应用启动时都会创建损坏的(另一个故事)快捷方式.

android shortcut android-3.0-honeycomb

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

如何确定属性是从基类继承还是在派生中声明?

我有一个派生自抽象类的类.获取派生类的类型我想找出哪些属性是从抽象类继承的,哪些属性是在派生类中声明的.

public abstract class BaseMsClass
{
    public string CommonParam { get; set; }
}

public class MsClass : BaseMsClass
{
    public string Id { get; set; }
    public string Name { get; set; }

    public MsClass()
    { }
}

var msClass = new MsClass
{
    Id = "1122",
    Name = "Some name",
    CommonParam = "param of the base class"
};
Run Code Online (Sandbox Code Playgroud)

所以,我想快速找出CommonParam是一个继承参数,Id,Name是在MsClass中声明的参数.有什么建议?

尝试使用仅声明的标志返回空PropertyInfo数组

Type type = msClass.GetType();
type.GetProperties(System.Reflection.BindingFlags.DeclaredOnly)

-->{System.Reflection.PropertyInfo[0]}
Run Code Online (Sandbox Code Playgroud)

但是,GetProperties()返回继承层次结构的所有属性.

type.GetProperties()

-->{System.Reflection.PropertyInfo[3]}
-->[0]: {System.String Id}
-->[1]: {System.String Name}
-->[2]: {System.String CommonParam} …
Run Code Online (Sandbox Code Playgroud)

c# reflection

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

如何用反斜杠替换正斜杠

我有一个字符串/Images/Me.jpg我想用这样的反斜杠替换正斜杠,我\Images\Me.jpg使用string.Replace("/","\"); 但输出\\Images\\Me.jpg请帮忙

.net c# string

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

较低的SDK目标时调用较高的API

我的应用支持minSdkVersion = 10和目标16.如果特定设备支持,我想调用特定于API级别> = 14的方法.我可以在运行时检查运行的OS版本以及是否调用更高级的API方法但是当我指定min SDK版本时,仅存在于高于10的版本中的方法不可见.有没有办法比minSdkVersion使用更高的API方法?

android

10
推荐指数
3
解决办法
6671
查看次数

从preference-headers启动活动

我正在实现n层PreferenceActivities第一层PreferenceActivity从preference-headers加载.

第一个头创建一个PreferenceFragment设置片段.第二个是浏览器活动(第二个是来自developer.android.com的示例),它打开指定的Url.第三个我想成为PreferenceAtivity的下一级,它也将从preference-headers加载.

前两个工作正常,但第三个是崩溃的应用程序,例外:

"android.content.ActivityNotFoundException:找不到处理Intent的活动{act = android.intent.action.VIEW dat = com.mycompany.myapp.ui.MyPreferenceActivity}"

在清单文件中声明的MyPreferenceActivity.可能在main_headers.xml中声明活动是错误的,但我没有在参考文献中找到任何提示如何更正.尝试了几种变化,它们没有用.

我使用的示例:http://developer.android.com/reference/android/preference/PreferenceActivity.html

有什么想法为什么它对我不起作用或如何调用下一个PreferenceActivity?基本上我只需要从头开始一个活动,这应该很简单,但我错过了一些东西.

public class MySettings extends PreferenceActivity 
{
    @Override
    public void onBuildHeaders(List<Header> target) 
    {
        loadHeadersFromResource(R.xml.main_headers, target);
    }
}
Run Code Online (Sandbox Code Playgroud)

main_headers.xml:

<?xml version="1.0" encoding="utf-8"?>
<preference-headers
    xmlns:android="http://schemas.android.com/apk/res/android" >

    <header android:title="Custom Settings"
        android:fragment="com.mycompany.myapp.ui.SettingsFragment" />

    <header android:title="Intent"
        android:summary="Launches an Intent.">
        <intent android:action="android.intent.action.VIEW"
                android:data="http://www.android.com" />
    </header>

    <header android:title="Another Preference Activity">
        <intent android:action="android.intent.action.VIEW"
            android:data="com.mycompany.myapp.ui.MyPreferenceActivity" />
    </header>
</preference-headers>
Run Code Online (Sandbox Code Playgroud)

android preferenceactivity android-fragments android-3.0-honeycomb

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

ksoap2 cast getResponse()

使用kso​​ap2 lib从android调用.net SOAP1.1 Web服务我遇到了对自定义对象进行强制响应的问题.例如,在httpTransport.call(soapAction,soapEnvelope)之后调用下面的代码是正确的.并在里面有数据.但我不能把它转移到SoapObject或Vector的特定对象,就像我在几个例子中看到的那样,我得到CastException或者什么都不简单.如果有人知道如何处理它,请帮助.

public StatusSetting[] GetAllStatuses(String installation){
    StatusSetting[] statuses = null;
    String methodName =  "GetAllStatuses";
    String soapAction = NAMESPACE + "/" + methodName;
    SoapObject request = new SoapObject(NAMESPACE, methodName);
    request.addProperty("installation", installation);

    SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    soapEnvelope.dotNet = true;
    soapEnvelope.setOutputSoapObject(request);

    AndroidHttpTransport httpTransport = new AndroidHttpTransport(SERVICE_URL);
    try {
        httpTransport.call(soapAction, soapEnvelope);
        statuses = (StatusSetting[])soapEnvelope.getResponse();

    } catch (Exception e) {
        e.printStackTrace();
    }
    return statuses;
}
Run Code Online (Sandbox Code Playgroud)

android web-services casting ksoap2

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

使用ntp服务

我正在开发一个应用程序,需要在地球上的任何位置控制实时,并在时间到来时做一些事情.同时不依赖系统时间因为用户可以轻松改变它.
有没有人有在Android设备上实现"sntp/ntp"服务的经验,还是有其他解决办法吗?谢谢

android ntp

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

使用linq更新对象集合中的属性

具有对象结构的对象列表如下

public class Schedule
{
    public int ID { get; set; }
    public string Name { get; set; }

    public Schedule() {}
}
Run Code Online (Sandbox Code Playgroud)

对数据执行linq查询我可以看到正确填充的对象列表

var schedule = (from d in data 
                select new Schedule
                {
                    ID = d.id,
                    Name = "" 
                }).ToList();
Run Code Online (Sandbox Code Playgroud)

稍后在代码中我想要更改属性名称取决于条件.我找到的几个例子

schedule.ForEach(s => { s.Name = "Condition Name"; });
schedule.Select(s => { s.Name = "Condition name"; return s; });
Run Code Online (Sandbox Code Playgroud)

执行后,当我在监视窗口中刷新计划时,请保留名称参数"null".有人能看出这有什么问题吗?

循环收集并尝试更改属性也不会改变它

   foreach (var sch in schedule)
   {
       sch.Name = "New name";
   }
Run Code Online (Sandbox Code Playgroud)

schedule.ToList()[0] .Name ==""

UPDATE

下面的代码段中的.ToList()调用对于使代码有效非常重要.

var …
Run Code Online (Sandbox Code Playgroud)

c# linq

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

解析ksoap2响应

我使用kso​​ap2 lib从android客户端与SOAP Web服务进行通信.ksoap团队做得很好,但问题是,没有任何好的例子如何在不同方面正确使用它.例如,我在数据后得到肥皂响应:

anyType{
    StatusSetting=anyType{Id=1; Name=Til afskrivning; LocationId=1; Editable=true; Default=true; Transcribed=false; }; 
    StatusSetting=anyType{Id=2; Name=Afskrevet; LocationId=1; Editable=false; Default=false; Transcribed=true; }; 
    ...
}
Run Code Online (Sandbox Code Playgroud)

它是一个复杂的对象,或者说是StatusSetting对象的集合.当我尝试获取SoapObject的属性时,它只有一个属性,所有数据都是字符串.它也不能被解析为json.令人难以置信的是,没有人遇到与人气普及的问题相同的问题正在获得.知道是否有人解决了这个问题以及如何解决这个问题会很酷.谢谢.

java android soap web-services ksoap2

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