小编ham*_*d_c的帖子

递归方法调用在 kotlin 中导致 StackOverFlowError 但在 java 中不会

我在 java 和 kotlin 中有两个几乎相同的代码

爪哇:

public void reverseString(char[] s) {
    helper(s, 0, s.length - 1);
}

public void helper(char[] s, int left, int right) {
    if (left >= right) return;
    char tmp = s[left];
    s[left++] = s[right];
    s[right--] = tmp;
    helper(s, left, right);
}
Run Code Online (Sandbox Code Playgroud)

科特林:

fun reverseString(s: CharArray): Unit {
    helper(0, s.lastIndex, s)
}

fun helper(i: Int, j: Int, s: CharArray) {
    if (i >= j) {
        return
    }
    val t = s[j]
    s[j] = s[i]
    s[i] = t …
Run Code Online (Sandbox Code Playgroud)

java recursion kotlin

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

Intent构造函数参数

Intent类有6个构造函数

意图()

创建一个空的意图.


意图(意图o)

复制构造函数.


意图(字符串动作)

使用给定操作创建意图.


意图(字符串动作,Uri uri)

使用给定操作和给定数据URL创建意图.


Intent(Context packageContext,Class cls)

为特定组件创建意图.


Intent(String action,Uri uri,Context packageContext,Class cls)

使用指定的操作和数据为特定组件创建意图.

我几乎是android编程的新手,当我需要启动另一个时,我大多使用第五个Activity或者Fragment:

Intent(Context packageContext, Class<?> cls)
Run Code Online (Sandbox Code Playgroud)

当我想Activity从一个开始,Fragment我这样做:

Intent i = new Intent(getActivity(), DestinationActivity.class);
Run Code Online (Sandbox Code Playgroud)

据我所知,getActivity()将返回一个Activity

但构造函数期望a Context,这怎么可能???

是否有可能因为Activity已经通过getActivity()隐式调用返回getApplicationContext()???

android android-intent android-fragments

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

<fragment>中的android:name属性

请解释一下ArticleListFragment,ArticleReaderFragmet因为它们在这段代码中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment android:name="com.example.news.ArticleListFragment"
            android:id="@+id/list"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
    <fragment android:name="com.example.news.ArticleReaderFragment"
            android:id="@+id/viewer"
            android:layout_weight="2"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我不知道他们指的是什么?它是在源代码中使用的Fragment类(或其子类)还是用于布局的XML文件?

如果它们是XML文件,它们必须位于哪里?

android android-fragments

11
推荐指数
2
解决办法
9275
查看次数

android.os.Bundle中getInt(字符串键)返回的整数是多少?

我阅读了有关getInt()方法的文档:

public int getInt(String key)

返回与给定键关联的值,如果给定键不存在所需类型的映射,则返回0.

参数:

键一个字符串

返回:

一个int值

但我无法理解它究竟归来的东西.

它的ID key是在R.java还是没有别的???

java android android-bundle

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

用 null 初始化对象或它的默认构造函数之间的区别

让我们假设我们有一个 Class,它只包含一个实例变量它的类型是引用类型。我们没有实现任何构造函数,所以 Class 有它的默认构造函数。

如果我理解正确,默认构造函数会为实例变量提供默认值,而引用类型的默认值为 null。真的吗?

如果是,我们要创建这个类的对象。这两个声明和初始化这个类的对象的语句有什么区别吗?

Class object = null;
Run Code Online (Sandbox Code Playgroud)

Class object = new Class();
Run Code Online (Sandbox Code Playgroud)

java null constructor

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