我尽了最大努力去谷歌这个但却找不到一个表格类似转换的表格形式的干净答案.
我想转换这些类型的原因是因为我使用Android NDK从本机代码调用函数.问题是本机代码调用Java中不存在的不同类型.
我实际上没有C语言的经验,并且通过快速查看代码找到了这几种类型.请随意编辑此帖子以添加要转换的不同类型.
From C to Java
long ->
short ->
char ->
unsigned long ->
unsigned short ->
unsigned char ->
byte ->
Int8 ->
Int16 ->
Int32 ->
UInt8 ->
UInt16 ->
UInt32 ->
Run Code Online (Sandbox Code Playgroud)
此外,如果其中任何一个无法转换为Java类型,请解释原因.
我想知道有人会如何命名以首字母开头而不是单词的成员字段.
public class MyClass {
// I know this is how it is for a member field with words.
private String myString;
// What about this String? It is representing the term "RV Scale" which is
// short for "Reclose Volts Scale."
private String RVScale;
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用private String recloseVoltsScale,但我宁愿保留RVScale.如果有人知道如果它的应该是rVScale或RVScale或别的东西,我会很感激的信息.
编辑:
那么,像这样的成员领域呢......
private int RV;
Run Code Online (Sandbox Code Playgroud) 我在过去一天左右收到这条消息,直到现在它还没有引起问题.我让我的代码早先与我的本机库一起运行,但今天我添加了一些新功能,但它再次无效.
LogCat中没有显示错误,但我的程序只是在我的设备上立即打开和关闭.没有消息说应用程序意外停止,只是屏幕上出现黑色闪烁.
我已经浏览了谷歌和搜索引擎优化,但这个消息有很多不同的原因.这是我的LogCat:
08-03 10:44:50.186: D/dalvikvm(2143): Trying to load lib /data/data/my.eti.commander/lib/libRelayAPI.so 0x40514f58
08-03 10:44:50.186: D/dalvikvm(2143): Added shared lib /data/data/my.eti.commander/lib/libRelayAPI.so 0x40514f58
08-03 10:44:50.186: D/dalvikvm(2143): No JNI_OnLoad found in /data/data/my.eti.commander/lib/libRelayAPI.so 0x40514f58, skipping init
08-03 10:44:50.288: I/DEBUG(1058): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
08-03 10:44:50.288: I/DEBUG(1058): Build fingerprint: 'LENOVO/IdeaPad_Tablet_A1_07/A1_07:2.3.4/GRJ22/eng.user.20120209.100319:user/release-keys'
Run Code Online (Sandbox Code Playgroud)
我想知道的是:
1)此No JNI_OnLoad消息是否导致我的程序无法打开?
2)如果是这样,我知道我没有发布任何代码,但有人可以解释这条消息的一般概念.包括init它是什么跳过.
编辑:
我今天添加的新功能在发生这种情况时被注释掉了.我最初得到了一个不同的错误,并希望确保我的旧代码仍然有效.
使用找到的开发人员指南here,我试图让我的图标导航回我的主屏幕.我目前有一个按钮来执行此操作,并复制并粘贴onOptionsItemSelected()方法中的代码.然而,点击图标永远不会做任何事情.这是ActionBar和ActionBarSherlock的不同之处吗?
这是作为示例给出的代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; go home
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的代码:
public boolean onOptionsItemSelected( MenuItem item ) {
switch( item.getItemId() ) {
case R.id.mainTopBluetoothState:
Toast.makeText( this, "BluetoothState", Toast.LENGTH_SHORT ).show();
return true;
case R.id.mainTopAppState:
Toast.makeText( this, "BluetoothState", Toast.LENGTH_SHORT ).show();
return true;
case android.R.id.home:
Log.i( "In Home", "In Home" );
killToasts(); …Run Code Online (Sandbox Code Playgroud) 我在GitHub上有一个项目,我在家里的办公室工作.大约2个月,它在两台机器上运行良好.两个星期前,它停止在家用电脑上运行,但在我的工作电脑上仍能正常工作.
这是我得到的错误:
:app:shrinkDebugMultiDexComponents FAILED
FAILURE:构建因异常而失败.
- 出了什么问题:任务执行失败':app:shrinkDebugMultiDexComponents'.java.io.IOException:无法读取[D:\ dev\gitRepo\app\android\app\build\intermediates\multi-dex\debug\allclasses.jar](无法处理类[__MACOSX/com/stripe /android/._BuildConfig.class](类中无效的幻数[51607]))
- 尝试:使用--stacktrace选项运行以获取堆栈跟踪.使用--info或--debug选项运行以获取更多日志输出.
stripe给我错误的包是你可以在这里找到的第三方库.我将它作为我的build.gradle文件中的依赖项完全按照他们的说法列出.
compile 'com.stripe:stripe-android:+'
Run Code Online (Sandbox Code Playgroud)
我已经注释掉所有stripe与该应用程序相关的代码并且应用程序运行完全正常,所以我知道它与我如何处理该包有关.
不幸的是,我不记得我做了什么让这个停止工作.我确实认为在发生这一周之前的一周我升级了Android Studio,并花了相当多的时间来搞乱ProGuard配置.
我尝试过的:
master在没有进行任何ProGuard更改的分支上工作.stripe.我认为这可能与我为ProGuard所做的事情有关,但我不明白如何做.我和Proguard的工作完全不同,有一个干净的AndroidStudio安装,有一个干净的存储库克隆,当我在办公室时,项目仍然正常.
编辑
我在debugBuildType 上运行它.这些是我的3个gradle文件.第一个是整个项目,第二个是应用程序模块,第三个是本地android库模块.
项目build.gradle:buildscript {repositories {jcenter()maven {url'http: //download.crashlytics.com/maven '}} dependencies {classpath'com.android.tools.build:grad:1.2.3'classpath'com.crashlytics .tools.gradle:crashlytics-gradle:1.+'}}
allprojects {
repositories {
jcenter()
maven{ url 'http://download.crashlytics.com/maven' }
}
}
Run Code Online (Sandbox Code Playgroud)
Android应用程序模块 build.gradle
buildscript {
repositories {
maven { …Run Code Online (Sandbox Code Playgroud) 这只是错误检查我的代码,但我想将字节数组中的单个字节转换为字符串.有谁知道如何做到这一点?这是我到目前为止:
recBuf = read( 5 );
Log.i( TAG, (String)recBuf[0] );
Run Code Online (Sandbox Code Playgroud)
但当然这不起作用.
我已经google了一下,但只找到了将整个byte []数组转换为字符串的方法......
new String( recBuf );
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做,然后筛选字符串,但如果我知道如何以这种方式操作,它将使我的任务更容易.
我的调试方法中有一系列Log语句onCreate(),但有时它们不会打印在我的方法中LogCat.有没有人知道的任何理由?
也许我误解了活动生命周期的基础知识.我访问了开发人员的页面,但它仍然没有意义.
让我澄清一下,Log如果我卸载应用程序然后再次从Eclipse启动它,则会显示调用.但是,我正在运行测试,以便在应用程序功能运行后查看它们.
我有一个MainMenu活动,它源于多个其他活动.当我卸载应用程序并重新启动它时,它会打印出我希望打印的内容.然后,我转到我的设备的设置和Force Quit应用程序(这是正确的事情吗?).之后,我再次打开我的应用程序.该方法没有Log消息onCreate(),但是当我移动到另一个Activity时,我MainMenu的方法onPause()和onStop()方法都有Log正确打印到LogCat的消息.
有任何想法吗?
编辑:
我想在重新启动时添加它,也会跳过方法中的Log消息onStart().
如果您有兴趣,这是我的onCreate/onStart/onPause/onStop方法.内部有很多重复的代码,试图找出重新启动应用程序时调用的方法.虽然不应该有所作为,我觉得这是我的重启应用程序的方法的问题.
public void onCreate(Bundle savedInstanceState) {
// This calls all inherited methods, as this is a subclass of Activity.
super.onCreate(savedInstanceState);
if(D) Log.e(TAG, "+++ ON CREATE +++");
Log.i( TAG, "Whats going onnnn" );
// Set the view the main.xml
setContentView(R.layout.main);
RelayAPIModel.bluetoothConnected = false;
// Initialize …Run Code Online (Sandbox Code Playgroud) 我最近下载了Android支持包,并一直在使用它试图让我的应用程序(在SDK 10上运行)使用GridLayout.
无论如何,我在我的XML文件中清理了我的项目几次这个错误,然后当我回到/ src中的类时,对R.*的每一个引用都是错误的.
这种情况在我之前发生过,但它通常会自行修复,而且还没有.有谁知道该怎么办?
R.java文件不再在我的/ gen文件夹中.
我想保存我的应用程序连接到的最后一个蓝牙设备。如果之前有蓝牙连接,我不想提示用户。他们可以选择连接到新设备,但他们不需要。如果他们选择不选择连接,他们将定期使用该应用程序,然后当需要蓝牙设备时,它将连接到最近的设备。
我已尝试使用Tudor Luca's以下答案中提供的代码,但该对象不会写入文件。我得到了一个NotSerializableException. 我试图保存的对象BluetoothDevice是使用import android.bluetooth.BluetoothDevice.
这就是我试图使蓝牙设备可序列化的方法:
import java.io.Serializable;
import android.bluetooth.BluetoothDevice;
public class SerializableObjects implements Serializable {
private BluetoothDevice device;
public SerializableObjects( BluetoothDevice device ) {
this.device = device;
}
public BluetoothDevice getDevice() {
return this.device;
}
}
Run Code Online (Sandbox Code Playgroud)
LogCat 返回这个:
12-11 17:46:24.032: W/System.err(24641): java.io.NotSerializableException: android.bluetooth.BluetoothDevice
12-11 17:46:24.032: W/System.err(24641): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1535)
12-11 17:46:24.032: W/System.err(24641): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
12-11 17:46:24.032: W/System.err(24641): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
12-11 17:46:24.032: W/System.err(24641): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
12-11 17:46:24.032: W/System.err(24641): at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:1143)
12-11 17:46:24.032: W/System.err(24641): …Run Code Online (Sandbox Code Playgroud) 编辑对所有图片抱歉.我试图让你最好地了解我的位置.
我正在努力ViewPager开发我的应用程序,但它无法识别Support Library我在SDK管理器中下载的内容.
我正在编写SDK版本10.这是我的屏幕截图SDK Manager:

安装Android Support Library和最近安装后Tools,我去了帮助>>检查更新.运行后,我收到下面显示的两个弹出窗口.

在Problem Occured弹出的说,它无法找到该网站的资料库.我安装了Sequoyah Natice Code Support第一次开始开发这个应用程序但从未使用它的时候.我试图重新安装包以摆脱这个弹出窗口,但它不会让我,因为它已经安装.

在我的代码中,我在尝试时遇到错误import android.support.v4.view.ViewPager;.屏幕截图如下.当我将光标悬停import在线上时,它说The import android.support.v4 cannot be resolved.
