小编Dav*_*sry的帖子

BroadcastReceiver和Activity之间的通信 - android

我的应用程序中有一个广播接收器,每次用户接到来电时都会被触发.现在,当它发生时,我需要广播接收器来调用特定活动中的特定方法.现在,我尝试将此方法设置为静态,因此可用,但有些东西告诉我这是一个非常糟糕的主意.

因此,我尝试在我的活动中实例化广播接收器而不在我的清单中声明它但问题是 - 当应用程序关闭时,活动不存在,因此我无法调用我的方法.

所以我的问题是 - 当广播接收器被激发时,如何在不使其成为"公共静态"的情况下调用此方法?

这是我的活动代码(我删除了不相关的部分)

package com.silverfix.ringo.activities;

import com.silverfix.ringo.R;
import com.silverfix.ringo.activities.fragments.DataManagerFragment;

import android.app.ActionBar;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;

public class RingtonesActivity extends Activity{

    private DataManagerFragment dataManagerFragment;
    private IntentFilter filter;
    private BroadcastReceiver phoneCall;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ringtones);
        ActionBar ab = getActionBar();
        ab.setDisplayShowTitleEnabled(false);
        ab.setDisplayHomeAsUpEnabled(true);
        dataManagerFragment = new DataManagerFragment();
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.add(dataManagerFragment, "DataManagerFragment");
        ft.commit();
        filter = new IntentFilter();
        filter.addAction("android.intent.action.PHONE_STATE");
        phoneCall = new BroadcastReceiver() {

            @Override
            public void …
Run Code Online (Sandbox Code Playgroud)

methods android invoke broadcastreceiver android-activity

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

AUTOINCREMENT只允许在INTEGER PRIMARY KEY - android上使用

我正在尝试在我的数据库中创建一个具有自动增量ID的表,但每当我尝试将AUTOINCREMENT关键字添加到我的查询时,它告诉我:

AUTOINCREMENT仅允许在INTEGER PRIMARY KEY上使用

这是我的查询:

@Override
public void onCreate(SQLiteDatabase db) {
    String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_TASKS + " ( "
            + KEY_ID + "INTEGER PRIMARY KEY AUTOINCREMENT, "
            + KEY_NOTETITLE + " TEXT, " + KEY_NOTECONTENT + " Text, "
            + KEY_STATUS + " INTEGER)";
    db.execSQL(sql);
}
Run Code Online (Sandbox Code Playgroud)

我也尝试写AUTO_INCREMENT,但后来我遇到了语法错误.

我发现这是问题的根源,因为每当我尝试删除AUTOINCREMENT字时,它都能正常工作.

那么......你认为这是什么问题?

sqlite android auto-increment

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

计算两点之间的角度 - java

我需要计算两点之间的角度,其中一个固定点通过一条线与给定的两点相连.

这是一张图片,说明了我的需求:

在此输入图像描述

这是我到目前为止所尝试的:

public static float GetAngleOfLineBetweenTwoPoints(float x1, float x2, float y1, float y2) {
        float xDiff = x2 - x1;
        float yDiff = y2 - y1;
        return (float) (Math.atan2(yDiff, xDiff) * (180 / Math.PI));
}
Run Code Online (Sandbox Code Playgroud)

说它没有提供正确答案毫无意义.

java lines angle points

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

活动崩溃生命周期方法 - android

我正在开发一个应用程序,在崩溃的情况下,需要在崩溃时保存一些数据.现在,我将这些数据保存在onDestroy()中,如下所示:

@Override
protected void onDestroy() {
    saveState();
    super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)

但是每当我故意崩溃我的应用程序时,都不会调用onDestroy()并且不会保存我的数据.

我的问题是,如何在崩溃时保存我的数据?我应该采取哪种方法?因为我还需要保存崩溃的时间,所以这是强制性的.

java crash backup android android-activity

7
推荐指数
1
解决办法
2379
查看次数

一个数字的素数之和 - Lua

我正在尝试计算给定数字中素数的总和.例如,对于数字123456,结果将是10,因为2 + 3 + 5 = 10.

我试着编写一个在Lua中执行此操作的代码,但我遇到了一些问题.

首先,这是代码:

    function isPrime(num)
if(num == 1 or (num ~= 2 and num%2 == 0)) then
  return false
end
for i=3, math.sqrt(num), 2 do
  if(num%i == 0) then
    return false
  end
end
return true
end

function sumOfPrimes(num)
local sum = 0
for digit in string.gmatch(num,"%d") do
  local prime = isPrime(digit)
  if(isPrime(digit)) then
    sum = sum + digit
  end
  print(digit)
end
return sum
end

function main()
print(sumOfPrimes(123456))
end
main()
Run Code Online (Sandbox Code Playgroud)

它回归9而不是10.我注意到的另一件事是它也加1,但1不是素数.这有什么问题?

lua primes integer sum

3
推荐指数
1
解决办法
197
查看次数

Box2D无法理解它的工作方式 - libgdx

我试图在libgdx中使用Box2D但不幸的是我似乎无法理解它的工作方式.

以下是一些让我发疯的例子:

0.1.众所周知,Box2D适用于仪表.大家都知道.然后,为什么我得到像素的结果?例如,如果我定义了一些主体定义并将位置设置为0,1,它会在屏幕的左下角绘制相关的fixture/sprite!我认为Box2D中的0,0点位于屏幕的中心.

0.2.我一直在努力理解和解决的另一个问题是形状,关节和其他东西的价值.让我们从形状开始:我定义了一个像这样的Polygon形状:

shape.setAsBox(1, 2);
Run Code Online (Sandbox Code Playgroud)

现在的形状应该为2 米的宽4 米的高度,但它并非如此.我得到的是一个超小的形状.

最后,关节的价值.我定义了一个具有多边形形状和地面体的主体.现在我使用Revolute Joint将这两个"固定"到地面中心,目标是创造某种在一定范围内旋转良好的弹射器.

现在我也定义了一个鼠标关节,所以我可以很好地来回拖动弹射器(多边形形状),但似乎我需要将关节的maxForce设置为一个巨大的值,这样我才能真正看到它的运动/旋转弹射!我不明白.就我必须设定的价值而言,所有这些问题都应该由较小的值来操作.

这是我的基本代码,包含上述所有内容.请告诉我我做错了什么,我在这里吓坏了:

GameScreen.java

package com.david.box2dpractice;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Body;
import com.badlogic.gdx.physics.box2d.BodyDef;
import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer;
import com.badlogic.gdx.physics.box2d.ChainShape;
import com.badlogic.gdx.physics.box2d.FixtureDef;
import com.badlogic.gdx.physics.box2d.PolygonShape;
import com.badlogic.gdx.physics.box2d.BodyDef.BodyType;
import com.badlogic.gdx.physics.box2d.World;
import com.badlogic.gdx.physics.box2d.joints.RevoluteJointDef;
import com.badlogic.gdx.utils.Array;

public class GameScreen implements Screen{

    private Box2DDebugRenderer debugRenderer;
    private Texture texture;
    private Sprite sprite;
    private Sprite tempSprite;
    private SpriteBatch batch;
    private Body arm , ground;
    private …
Run Code Online (Sandbox Code Playgroud)

meter box2d libgdx

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

创建图像的副本-python

我正在尝试从图像文件中读取数据并将其写入新文件-进行复制。

这是我的代码,用于读取原始图像的数据并将每个字节写入新图像:

file = open("image2.png", "w")
with open("image.png", "rb") as f:
    while True:
        byte = f.read(1)
        if not byte:
            break
        file.write(byte)
Run Code Online (Sandbox Code Playgroud)

现在,它确实创建了一个名为“ image2.png”的新文件,但是当我尝试打开它时,出现一个错误,提示图像已损坏或损坏。

如何读取图像数据并将其写入新文件?

python binary byte image

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

android.permission.WRITE_SETTINGS错误

我正在尝试通过应用程序修改手机上的某些设置,但我一直收到此错误:

java.lang.SecurityException:Permission denial:写入设置需要android.permission.WRITE_SETTINGS

我已将此权限添加到我的清单中,但错误仍然存​​在.这是我的清单中的一个片段:

<uses-permission
    android:name="android.permission.MEDIA_CONTENT_CONTROL"
    android:maxSdkVersion="11" />
<uses-permission
    android:name="android.permission.CHANGE_CONFIGURATION"
    android:maxSdkVersion="11" />
<uses-permission
    android:name="android.permission.READ_PHONE_STATE"
    android:maxSdkVersion="11" />
<uses-permission
    android:name="android.permission.WRITE_SETTINGS"
    android:maxSdkVersion="11" />
Run Code Online (Sandbox Code Playgroud)

这里有什么问题?

android android-permissions

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