我想知道是否有办法检查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) 我通过新的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) 我实现了SwipeRefreshLayout和ViewPager我的应用程序,但有一个大麻烦:每当我要去刷卡左/右滚动页面之间切换过于敏感.稍微向下滑动也会触发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)
任何帮助将不胜感激,谢谢
EditTexts我的布局中有一个带有两个登录屏幕和一个登录按钮的登录屏幕.问题是,当我开始输入时,会显示软键盘并覆盖登录按钮.如何在键盘出现时向上或向上推动布局?
我不想使用a ScrollView,只想在不向下滚动的情况下实现它.拜托,建议我做一些方法.提前致谢.
我的应用有一个带有3个片段标签的操作栏.在第二个片段中,我注册并取消注册BroadcastReceiver.我注销在接收onPause和登记它onCreateView和onResume.
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 Studio的应用程序的gradle设置中使用ProGuard.在"Gradle Console"窗口中,我可以阅读proGuard的警告.但是,当我使用它时whyareyoukeeping,没有任何东西在那里显示.我错过了什么吗?
这是我尝试使用它的方式的一个示例:
-whyareyoukeeping class com.google.android.gms.internal.zzel
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: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) 我想改变我在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) 我是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) 我正在寻找一种在领域查询中组合 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 中做到这一点?
我已经开发了一个应用程序start,pause,resume和finish按钮.
它在使用线程和处理程序的活动中正常工作.
如果用户点击该start button线程,则启动并显示该线程textviewHH:MM:SS time,其余按钮也正常工作.
问题:
如果活动进入后台,那么如何更新textview时间?我已经为此任务提供了服务,但是,如何将服务的响应转移到UI?
拜托,您能告诉我如何做到这一点或任何其他可能的解决方案吗?