我有一个Java类MyClass,其中包含一个称为的方法callMethod。当用户单击通知时,我想调用此方法
以下是我用于生成通知的代码
public class MainActivity extends AppCompatActivity {
Button button;
NotificationManager mNotifyMgr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
mNotifyMgr = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, new Intent(MainActivity.this, MyClass.class), PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification =
new NotificationCompat.Builder(MainActivity.this)
.setContentTitle("Notification")
.setSmallIcon(R.drawable.ic_launcher)
.setContentText("Downloaded")
.setContentIntent(pendingIntent)
.build();
mNotifyMgr.notify(1,notification);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
下面是执行 MyClass
public class MyClass {
public void callMethod(){
System.out.println("Notification clicked");
}
}
Run Code Online (Sandbox Code Playgroud)
请帮忙,我暂时陷入了困境
我有一个像这样的Camel案例字符串s = 'ThisIsASampleString',我想使用大写字母作为分隔点拆分成一个数组.我期待这个:
['This', 'Is', 'A', 'Sample', 'String']
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所做的
s = "ThisIsASampleString";
var regex = new RegExp('[A-Z]',"g");
var arr = s.split(re);
Run Code Online (Sandbox Code Playgroud)
但这并没有给我正确的结果,因为它删除了匹配的字符.我得到这个数组作为我的结果["his", "s", "", "tring"].它删除了所有匹配的大写字母.
我应该如何避免这种行为并将匹配的字符保留在我的结果数组中?
我不知道是否有人回答,我发现了一些类似的问题,但这些答案对我来说没有任何意义。所以,我又来问了。
我们如何测试活动内部的方法。
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
//inflate layout
}
public int someMethod() {
//perform some logic and return an integer
}
}
Run Code Online (Sandbox Code Playgroud)
我想对该方法进行单元测试,someMethod但是我该怎么做,因为我无法创建活动的实例并直接调用该方法。被测方法不使用任何 android 组件,所以我不想使用 Roboelectric 或任何其他此类库或工具。这是一个普通的java方法。
我知道的一种方法是将方法移到另一个类并对该类进行单元测试,我对此非常满意,但我想知道这是否是正确的方法(为此目的创建一个单独的类),或者有没有其他方法可以做到?
感谢您的任何反馈。
我已将Glide的版本从4.0.0-RC0升级到4.4.0.但它给我一个错误的说法
Error:Module 'com.github.bumptech.glide:glide:4.4.0' depends on one or more Android Libraries but is a jar
Run Code Online (Sandbox Code Playgroud)
它不是说哪个罐子或任何其他信息.有人知道如何解决这个问题吗?我还在build.gradle中附加了Glide的条目
compile 'com.github.bumptech.glide:glide:4.4.0'
compile 'com.github.bumptech.glide:okhttp3-integration:4.4.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.4.0'
compile 'com.github.bumptech.glide:annotations:4.4.0'
Run Code Online (Sandbox Code Playgroud)
编辑:我正在使用支持库版本27.0.1
首先让我澄清一下,我知道这是一个非常糟糕的做法,我不会将此更改推送到我的生产代码中。但有时我们需要调试我的应用程序的不可调试风格的一些更改,但所有 https url 都失败并出现以下错误
Client SSL handshake failed: An unknown issue occurred processing the certificate (certificate_unknown)
我已使用以下网络配置文件并添加到我的清单文件中。这在应用程序的可调试风格中工作,但在不可调试风格中仍然不起作用。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config>
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<debug-overrides>
<trust-anchors>
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Run Code Online (Sandbox Code Playgroud)
有什么方法可以使用 charles 在 Android 应用程序的不可调试风格中监视我的网络调用吗?
当我尝试在 Application 类中初始化 Firebase 时,我的 Roboelectric 单元测试给出了此异常。
java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process null. Make sure to call FirebaseApp.initializeApp(Context) first.
有什么方法可以忽略这个异常并让我的测试通过吗?
我正在尝试使用glide将URL中的图像加载到我的imageview中,但是它不起作用。我无法下载并显示图像。我已经在项目中添加了所有依赖项和权限,但似乎仍然无法正常工作。这是我在项目中拥有的所有文件。奇怪的是我的日志中没有任何错误或异常
////MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String imgUrl = "data:image/png;base64,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";
ImageView imageView = (ImageView) findViewById(R.id.imageView);
Glide.with(this)
.load(imgUrl)
.into(imageView);
}
}
Run Code Online (Sandbox Code Playgroud)
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.banty.gallaryapp.MainActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="400dp"
android:layout_height="400dp"
android:layout_centerInParent="true"
/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我的清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.banty.gallaryapp">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> …Run Code Online (Sandbox Code Playgroud) 我有一个包含13个数据项的回收站视图.我想知道列表中的第一项是否可见?
我知道类似的方法findFirstVisibleItemPosition,findLastVisibleItemPosition但他们没有告诉第一个可见项是否实际上是列表的第一项.
我试图解决的问题是,我有一个视图寻呼机作为我的回收器视图的第一项,我想在用户向下滚动时停止自动滚动,它变得完全不可见.
如果有人知道如何做到这一点,请帮助.
android ×7
unit-testing ×2
camelcasing ×1
gradle ×1
java ×1
javascript ×1
regex ×1
robolectric ×1
split ×1
string ×1