小编And*_*Dev的帖子

在GDB中设置断点

我有一个返回指针的函数:

static void*find_fit(size_t asize);

我想在gdb中设置一个断点,但是当我输入这个函数名时,我得到以下错误之一:

break*find_fit函数"*find_fit"未定义

要么

break find_fit函数"find_fit"未定义

我可以轻松地在返回指针以外的函数的函数上设置断点,但是当函数确实返回指针时,gdb似乎不想在它上面打破.

有谁看到发生了什么?谢谢!

gdb breakpoints

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

Android AVD不会显示多个窗格

我正在学习多窗格应用程序,并且正在运行Master/Detail Flow应用程序,该应用程序在您创建新项目时由Android Studio设置(并选择此选项).根据创建的Google代码中的注释,应用程序应以多窗格模式显示,以用于具有大屏幕布局的设备.我遇到的问题是无论我使用什么AVD,我只能获得一个窗格.首先,这是主要活动的onCreate方法.请注意,此代码直接来自Google(不是我的代码):

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_item_list);

        if (findViewById(R.id.item_detail_container) != null) {
            // The detail container view will be present only in the
            // large-screen layouts (res/values-large and
            // res/values-sw600dp). If this view is present, then the
            // activity should be in two-pane mode.
            mTwoPane = true;

            // In two-pane mode, list items should be given the
            // 'activated' state when touched.
            ((ItemListFragment) getFragmentManager()
                    .findFragmentById(R.id.item_list))
                    .setActivateOnItemClick(true);
        }

        // TODO: If exposing deep links into your app, handle …
Run Code Online (Sandbox Code Playgroud)

android

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

用Java创建网格

作为学习Java的一种方式,我正在为小学生编写这个小应用程序来练习基础数学.这个想法是,孩子会遇到任何数学问题,只要他们在应用程序中,就会继续向他们提出问题,直到他们点击"完成"按钮.当他们决定完成时,我想要一个新的JFrame,它会向他们展示他们尝试的所有问题,以及他们的答案,以及他们是否正确或错误地解决了问题.

我正在寻找的建议是什么是我提出这些结果的最佳方式.我查看了GridLayout和GroupLayout,但我不认为这些是完全正确的.我在VBA for Excel中做了类似的事情,在那里我只针对他们尝试的每个问题运行一次for循环.每次迭代都会向框架添加一行标签,并在各种标签中显示问题元素.我在Java中试过这个,但我甚至无法让标签显示出来.

所以在我得到所有特定内容并开始发布我的代码之前,我想问一个更大的问题,即"创建这样的视图的最佳方法是什么?" 通常情况下,我会向一个方向走,只是为了浪费时间,然后才有人建议采用完全不同(更好)的方法.

谢谢!

(编辑:这是我在Excel中如何做到这一点的图像.我试图在Java中重复基本相同的事情)

在此输入图像描述

java user-interface swing jtable jlabel

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

通过引用传递布尔值

在目标c中是否可以通过引用传递布尔值?我有许多布尔属性需要管理,所以我想将这些值的切换封装到一个函数中,我可以从每个按钮单击事件中调用它.这是一个例子:

@interface MyViewController()
@property (nonatomic) BOOL *sendEmails;
@end
Run Code Online (Sandbox Code Playgroud)

然后在UIButton点击事件中,我有这个方法调用:

[self updateEmailPreference:self.sendEmails button:self.noEmailsCheckBox];
Run Code Online (Sandbox Code Playgroud)

哪个调用此方法:

- (void) updateEmailPreference : (BOOL *) b
                        button : (UIButton *) button
{
    if (*b) {*b = NO;}
    else {*b = YES;}

    if (*b) {
        [button setBackgroundImage:[UIImage imageNamed:@"checked_checkbox"] forState:UIControlStateNormal];
    } else {
        [button setBackgroundImage:[UIImage imageNamed:@"unchecked_checkbox"] forState:UIControlStateNormal];
    }
}
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这个崩溃了if (*b)....这可能吗?谢谢!

boolean objective-c pass-by-reference

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

Dagger - 从其他类访问 Singleton 对象

我一直在努力理解和设置 Dagger 来处理我的 Android 项目的依赖注入。我的唯一(没有双关语)目标是创建可以在我的应用程序中访问的单例对象。我已经在初始活动中成功设置了对象。我遇到的问题是从其他类访问这些对象。到目前为止,这是我的设置:

初始应用活动

public class SplashScreenActivity extends AppCompatActivity {

    @Inject SessionKeyExchangerService exchangerService;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash_screen);

        AppComponent component = DaggerAppComponent.builder().appModule(new AppModule()).build();

        // establish the session id as a singleton object
        exchangerService = component.provideSessionKeyExchangerService();

        // test whether I can access the singleton from another class
        exchangerService.sendEncryptedKeyToServer();
    } 
Run Code Online (Sandbox Code Playgroud)

组件类

@Singleton
@Component(modules = {AppModule.class})
public interface AppComponent {

    SessionKeyExchangerService provideSessionKeyExchangerService();

    AESCipherService provideCipherService();
}
Run Code Online (Sandbox Code Playgroud)

模块类

@Module
public class AppModule {

    @Provides @Singleton
    AESCipherService provideCipherService() {
        return new …
Run Code Online (Sandbox Code Playgroud)

java android dependency-injection dagger-2

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

Android - 在更深层的现有视图之上精确绘制ImageView

这是一个难以描述的情况,所以请耐心等待.我被要求做一个'教练标记'屏幕有点像这样:

在此输入图像描述

然而,在我的情况下,我需要将一些底层图像"拉"到前面并以不同的颜色显示它们以使它们脱颖而出.在运行时,我无法确定这些图像的"帧"是什么.我的方法是添加一个覆盖整个屏幕的黑色,半透明视图(我称之为"幕布"),然后添加我需要的图像作为不同颜色的幕布的子视图.编辑这部分很容易,我不是要求帮助(这就是为什么这个建议的问题的重复是不正确的).

我不相信我可以使用bringToFront()setTranslationZ()因为这些方法不会一直带到ImageView我的幕前.所以,我想要做的是获得相对于整个屏幕的图像视图(其x,y,宽度和高度)的确切"框架",然后尝试使用相同的drawable添加新的图像视图相同的框架.

同样重要的是要知道底层的"视图"实际上由多个视图(包括滑动抽屉)组成,这就是我需要获取相对于屏幕的坐标的原因.我希望这是有道理的.

我可以ImageView使用正确的颜色绘制新的窗帘子视图,但图像的位置和大小是偏离的.我怎样才能ImageView在前一个上面精确地绘制这个新的?

我也对其他策略持开放态度(因为这个策略似乎不起作用).感谢您的任何帮助.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ...

    ViewTreeObserver vto = mRootview.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {

            mRootview.getViewTreeObserver().removeOnGlobalLayoutListener(this);

            mDrawerLayout.openDrawer(Gravity.LEFT);

            RelativeLayout curtain = addOpaqueCurtainToRootView();
            int frame[] = getFrameOfExistingImageView();
            addNewImageViewOnTopOfEverything(curtain, frame);
        }
    });
}

private RelativeLayout addOpaqueCurtainToRootView() {
    RelativeLayout curtain = new RelativeLayout(context);
    RelativeLayout.LayoutParams curtainParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
    curtain.setLayoutParams(curtainParams);
    curtain.setBackgroundColor(Color.argb(179, 0, 0, 0)); //70% opaque
    mRootview.addView(curtain);
    return …
Run Code Online (Sandbox Code Playgroud)

android view

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

毕加索将图像加载到目标中

我正在使用Picasso下载各种图像.通常,我只是在显示这些,ImageView但在这种情况下,我想对它们进行强有力的引用,以便我可以在不同的地方使用它们,而无需返回缓存或重新下载它们.以下是我试图这样做的方法(请注意,本课程还有更多内容 - 我只是将其缩小到与此问题相关的部分):

public class MapLayer {

    private Context mContext;
    private String mType;
    private Drawable mIcon = null;

    public MapLayer (Context context, String type) {
        mContext = context;
        mType = type;
        downloadIcon();
    }

    public Drawable getIcon() {return mIcon;}

    private void downloadIcon() {

        String url = mContext.getString(R.string.maps_icon_url).replace("${type}", mType));

        Target target = new Target() {
            @Override
            public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                Log.d(TAG, "on bitmap loaded");
                mIcon = new BitmapDrawable(mContext.getResources(), bitmap);
            }

            @Override
            public void onBitmapFailed(Drawable errorDrawable) {
                Log.d(TAG, …
Run Code Online (Sandbox Code Playgroud)

android picasso

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

YouTube API - 通过播放列表查询获取所有视频的标签

我正在查询 YouTube 频道以检索播放列表元数据,如下所示:

https://www.googleapis.com/youtube/v3/playlistItems?part=snippet%2CcontentDetails&maxResults=5&playlistId={PLAYLIST_ID}&key={API_KEY}

此查询返回频道上所有视频的数组。该数组中的每个对象都包含提供每个视频元数据的各种字段,但这些字段都不包含与视频关联的标签。我可以使用如下查询获取该数据:

https://www.googleapis.com/youtube/v3/videos?key={API_KEY}&fields=items(snippet(title,description,tags))&part=snippet&id={VIDEO_ID}

问题在于,现在我需要对第一个查询中返回的每个视频发出单独的查询。

所以,我的问题是,有没有办法可以将这些标签作为第一个查询的初始 JSON 对象的一部分包含在内?我可以添加任何参数来请求该数据包含在该响应中吗?

谢谢你的帮助!

youtube youtube-api youtube-data-api

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

使用改造处理 Kotlin 序列化 MissingFieldException

我将kotlinx.serialization改造结合使用。我收到的 json 响应将根据它将包含的属性而有所不同。在大多数情况下,我的应用程序中的数据模型包含的字段比我在响应中收到的字段多。我无法控制它,所以我需要在代码中处理它。

Kotlinx.serializationMissingFieldException在这种情况下会抛出 a 。我知道在使用时Json.parse您可以将其包装在 try-catch 块中并忽略此类错误。但是由于我使用的是 Retrofit,所以我看不到使用这种方法的方法:

网络服务.kt

interface WebService {
    @GET("person.json")
    fun getPerson(): Call<MainActivity.Person>
}
Run Code Online (Sandbox Code Playgroud)

主活动.kt

class MainActivity : AppCompatActivity() {

    @Serializable
    data class Person(val name: String, val species: String, val missing: String)

    @UnstableDefault
    override fun onCreate(savedInstanceState: Bundle?) {
        val mediaType = "application/json".toMediaTypeOrNull()
        mediaType?.let {
            retrofit = Retrofit.Builder()
                .addConverterFactory(Json.nonstrict.asConverterFactory(it))
                .baseUrl(baseUrl)
                .build()
        }

        webService = retrofit.create(WebService::class.java)

        GlobalScope.launch {
            val person = fetchPerson(webService)
        }
    }

    private suspend fun fetchPerson(webService: WebService): Person …
Run Code Online (Sandbox Code Playgroud)

android json retrofit2 kotlinx.serialization

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

为什么气泡显示为正常通知?

我最近一直在试验新的Bubbles API。无论我做什么,我希望显示为气泡的通知总是作为正常通知出现在系统托盘中。

我已经编写了自己的玩具应用程序,我将在此处添加。我还从我研究过的教程(这里这里)中提取了一些其他应用程序。在每种情况下,没有气泡,只有系统托盘通知。

由于示例应用程序断言它们可以呈现气泡,因此我假设问题一定出在我的模拟器环境中。我正在运行一个使用Android API R. 我在开发者选项中启用了气泡:

在此处输入图片说明

这是我开发的应用程序中的相关代码:

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.bubbles">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".BubbleActivity"
            android:allowEmbedded="true"
            android:documentLaunchMode="always"
            android:resizeableActivity="true" />
        <activity
            android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

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

主活动.kt

import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModelProvider

class MainActivity : AppCompatActivity() {

    private lateinit var bubbleViewModel: BubbleViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        bubbleViewModel = ViewModelProvider(
            this, BubbleViewModelFactory(this.application))
            .get(BubbleViewModel::class.java)
    }

    fun blowBubble(view: …
Run Code Online (Sandbox Code Playgroud)

android android-bubbles

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