小编Jua*_*mez的帖子

如何检查"lateinit"变量是否已初始化?

我想知道是否有办法检查lateinit变量是否已初始化.

class Foo() {

    private lateinit var myFile: File

    fun bar(path: String?) {
        path?.let { myFile = File(it) }
    }

    fun bar2() {
        myFile.whateverMethod()
        // May crash since I don't know whether myFile has been initialized
    }
}
Run Code Online (Sandbox Code Playgroud)

kotlin

322
推荐指数
7
解决办法
9万
查看次数

停止handler.postDelayed()

我通过新的Handler()调用多个处理程序.postDelayed(new Runnable().....如果单击返回按钮,我怎么能阻止它?

public class MyActivity extends AppCompatActivity implements OnClickListener {

    private Button btn;
    private Handler handler;
    private Runnable myRunnable;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        btn = (Button) findViewById(R.id.trainingsstart);
        btn.setOnClickListener(this);   
    }

    @Override
    public void onClick(View v) {
        Handler handler =  new Handler();
        Runnable myRunnable = new Runnable() {
            public void run() {
                // Things to be done
            }
        };

        handler.postDelayed(myRunnable, 3000);
    }

    @Override 
    public void onBackPressed() { 
        super.onBackPressed();
        handler.removeCallbacks(myRunnable);
    }   
}
Run Code Online (Sandbox Code Playgroud)

我有一个问题,我的处理程序没有像"myHandler"这样的名字.我该怎么处理?感谢帮助!

现在我收到了这些错误:

03-28 17:47:03.662: E/AndroidRuntime(1961): FATAL EXCEPTION: main …
Run Code Online (Sandbox Code Playgroud)

android handler postdelayed android-handler

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

SwipeRefreshLayout + ViewPager,仅限制水平滚动?

我实现了SwipeRefreshLayoutViewPager我的应用程序,但有一个大麻烦:每当我要去刷卡左/右滚动页面之间切换过于敏感.稍微向下滑动也会触发SwipeRefreshLayout刷新.

我想设置水平滑动开始时的限制,然后强制水平直到滑动结束.换句话说,当手指水平移动时,我想取消垂直滑动.

这个问题只发生在ViewPager,如果我向下滑动并SwipeRefreshLayout触发刷新功能(显示条形图)然后我水平移动手指,它仍然只允许垂直滑动.

我试图扩展ViewPager课程,但它根本不起作用:

public class CustomViewPager extends ViewPager {

    public CustomViewPager(Context ctx, AttributeSet attrs) {
        super(ctx, attrs);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        boolean in = super.onInterceptTouchEvent(ev);
        if (in) {
            getParent().requestDisallowInterceptTouchEvent(true);
            this.requestDisallowInterceptTouchEvent(true);
        }
        return false;
    }

}
Run Code Online (Sandbox Code Playgroud)

布局xml:

<android.support.v4.widget.SwipeRefreshLayout
    android:id="@+id/viewTopic"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.myapp.listloader.foundation.CustomViewPager
        android:id="@+id/topicViewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</android.support.v4.widget.SwipeRefreshLayout>
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,谢谢

android gesture android-viewpager swiperefreshlayout

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

如何在软键盘显示android时移动布局

EditTexts我的布局中有一个带有两个登录屏幕和一个登录按钮的登录屏幕.问题是,当我开始输入时,会显示软键盘并覆盖登录按钮.如何在键盘出现时向上或向上推动布局?

我不想使用a ScrollView,只想在不向下滚动的情况下实现它.拜托,建议我做一些方法.提前致谢.

android android-softkeyboard

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

在片段中注册和取消注册BroadcastReceiver

我的应用有一个带有3个片段标签的操作栏.在第二个片段中,我注册并取消注册BroadcastReceiver.我注销在接收onPause和登记它onCreateViewonResume.

getActivity().registerReceiver(this.batteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
Run Code Online (Sandbox Code Playgroud)

getActivity().unregisterReceiver(batteryInfoReceiver);
Run Code Online (Sandbox Code Playgroud)

1)两次注册相同的接收器是否可以(在onCreateView和onResume上)?(它是无害的吗?)

2)在onResume中注册接收器是否足够?

android broadcastreceiver android-fragments

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

ProGuard在Android Studio中输出的内容是什么?

我在Android Studio的应用程序的gradle设置中使用ProGuard.在"Gradle Console"窗口中,我可以阅读proGuard的警告.但是,当我使用它时whyareyoukeeping,没有任何东西在那里显示.我错过了什么吗?

这是我尝试使用它的方式的一个示例:

-whyareyoukeeping class com.google.android.gms.internal.zzel
Run Code Online (Sandbox Code Playgroud)

android proguard android-studio android-gradle-plugin

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

自定义视图未显示

以下是我希望自定义视图显示的布局的XML.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:rs="http://schemas.android.com/apk/res/com.bookcessed.booksearch"
    android:id="@+id/widget273"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/csp_tv_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Choose Your Source"
        android:textSize="40sp"
        android:textColor="#ffc83200"
        android:gravity="center"
        android:paddingTop="15dip"
        android:paddingBottom="75dip"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

    <com.bookcessed.booksearch.SearchProviderButton
        android:id="@+id/csp_spb_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/csp_tv_title"
        rs:providerName="BOOKP" />

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

这是自定义视图的XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:rs="http://schemas.android.com/apk/res/com.bookcessed.booksearch"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <RelativeLayout
        android:id="@+id/pv_rl_strings"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_alignParentTop="true" >

        <TextView
            android:id="@+id/pv_tv_search"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Search"
            android:layout_toRightOf="@+id/pv_tv_and"
            android:textSize="18sp"
            android:textColor="#ff11ab37"
            android:layout_alignParentTop="true" />

        <TextView
            android:id="@+id/pv_tv_and"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=" and "
            android:textSize="18sp"
            android:paddingLeft="6dip"
            android:paddingRight="6dip"
            android:textColor="#ff000000"
            android:layout_centerHorizontal="true" />

        <TextView
            android:id="@+id/pv_tv_browse"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Browse" …
Run Code Online (Sandbox Code Playgroud)

java xml layout android custom-controls

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

动态调整大小片段android

我想改变我在MaiActivity中使用的片段的宽度?但我发现它无法LayoutParams更改其默认宽度:

public class MainActivity extends Activity {

    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        int widthFfragment = 300;

        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        widthTot = size.x;
        heightTot = size.y;

        findViewById(R.id.f1).getLayoutParams().width = widthTot-widthFfragment;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的片段代码:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/f1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#330000"
    android:gravity="center_horizontal|center_vertical"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Fragment 1"
        android:textAppearance="?android:attr/textAppearanceLarge" />

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

Fragment1.java

public class Fragment1 extends Fragment{

    @Override
    public View onCreateView(LayoutInflater …
Run Code Online (Sandbox Code Playgroud)

android android-fragments

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

与Otto和Dagger的NullPointerException

我是Otto的新手,我在与Dagger依赖注入器和JobManager一起完成其功能时遇到了严重的麻烦.每当我启动我的应用程序时,我都会收到相同的错误消息:

"java.lang.RuntimeException: Unable to resume activity {sdos.juanjosemelero.pruebaormlite2/sdos.juanjosemelero.pruebaormlite2.MainActivity}:
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.squareup.otto.Bus.register(java.lang.Object)' on a null object reference"

[...]

"Caused by java.lang.NullPointerException:
Attempt to invoke virtual method 'void com.squareup.otto.Bus.register(java.lang.Object)' on a null object reference".
Run Code Online (Sandbox Code Playgroud)

它引用的线是这一行:

bus.register(this);
Run Code Online (Sandbox Code Playgroud)

这是我的活动:

public class MainActivity extends ActionBarActivity {

    @Inject Bus bus;   

    @Override
    protected void onResume() {
        super.onResume();
        bus.register(this);
    }

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

    }

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

这是我的匕首注射模块:

@Module(
    injects = {MainActivity.class}, …
Run Code Online (Sandbox Code Playgroud)

android bus registering otto dagger

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

领域:组合“或”和“与”

我正在寻找一种在领域查询中组合 AND 和 OR 的方法。

这是我的课:

class Event extends RealmObject {
   String id;
   String date;
}
Run Code Online (Sandbox Code Playgroud)

现在,我有一个 s 列表id,我想检索Eventid 为 {1, 4, 5} 和 的 s date = "2016-01-01"。在 SQL 中我会有这样的查询:WHERE id IN ids AND date = 'mydate'

到目前为止我尝试过的:

RealmQuery<Event> query = realm.where(Event.class);

for(String id : ids) {
   query = query.or().equalTo("id", id);
}

query.equalTo("date", "2016-01-01");
Run Code Online (Sandbox Code Playgroud)

但这样是行不通的。我怎样才能在 Realm 中做到这一点?

realm

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

如何更新服务类中更新的textview文本

我已经开发了一个应用程序start,pause,resumefinish按钮.

它在使用线程和处理程序的活动中正常工作.

如果用户点击该start button线程,则启动并显示该线程textviewHH:MM:SS time,其余按钮也正常工作.

问题:

如果活动进入后台,那么如何更新textview时间?我已经为此任务提供了服务,但是,如何将服务响应转移到UI?

拜托,您能告诉我如何做到这一点或任何其他可能的解决方案吗?

service android background android-layout

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