Android studio
Android手机或者安卓模拟器
首先创建一个Test项目工程,选择默认版式,选择好自己喜欢的主题(Theme)。
Android studio教程:[6]创建多个Activity
在文件管理器中找到layout下的xml文件,并将其复制粘贴一份到layout目录下,命名为second_activity.xml。
Android studio教程:[6]创建多个Activity
接下来在.java文件处新建一个java class,命名为SecondActivity。
Android studio教程:[6]创建多个Activity
Android studio教程:[6]创建多个Activity
此时可以看到文件目录中多出来一个xml文件和一个java类文件。
Android studio教程:[6]创建多个Activity
打开AndroidManifest.xml文件,添加一个<activity></activity>标签,添加内容如下:
<activity
android:name=".SecondActivity"
android:label="Second Activity">
<intent-filter>
<action android:name="com.litreily.SecondActivity"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
Android studio教程:[6]创建多个Activity
修改SecondActivity.xml:
<TextView
android:text="The Second Activity!"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Android studio教程:[6]创建多个Activity
修改SecondActivity.java文件:
public class SecondActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.SecondActivity)
}
}
Android studio教程:[6]创建多个Activity
修改主界面的activity_my.xml文件,添加一个按钮,用于跳转Activity:
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="转到下一个界面"
android:onClick="onClick"/>
Android studio教程:[6]创建多个Activity
在主界面的java类中实现按钮的点击事件响应函数onClick,通过startActivity函数打开新的Activity.
public void onClick(View view)
{
startActivity(new Intent("com.litreily.SecondActivity"))
}
Android studio教程:[6]创建多个Activity
设置采用模拟器打开App,并启动调试打开模拟器。
Android studio教程:[6]创建多个Activity
在模拟器中运行程序,点击按钮可以切换Activity,在第二个界面点击返回键可以返回主界面。
Android studio教程:[6]创建多个Activity
Android studio教程:[6]创建多个Activity
注意事项
xml文件的命名为小写字母或者数字,大写字母可能会报错
为什么您不能使用函数的原因是相当根深蒂固和遗憾的是目前无法解决。寻找到 libs/armeabi-v7a/include/bits/c++config.h 文件在 gnu stdlibc + + 文件夹中,你会看到这个:
...
/* Define if C99 functions or macros from <wchar.h>, <math.h>, <complex.h>,
<stdio.h>, and <stdlib.h>can be used or exposed. */
/* #undef _GLIBCXX_USE_C99 */
...
在上面,在下面的代码段从结合 bits/basic_string.h 咒语坏消息:
...
#if (defined(__GXX_EXPERIMENTAL_CXX0X__) &&defined(_GLIBCXX_USE_C99) \
&&!defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF))
/* The definitions of Numeric Conversions [string.conversions] */
#endif
...
因此,这些函数是在 NDK 中无法使用。
根本原因:根本原因似乎是 C99 的功能用法已在 GNU stdlibc + + 中由于事实 armeabi v7a 平台上被禁用仿生 libc 不支持复杂的数学 (Android 上的标准 C 库是仿生)。
可能修复 (未经测试):探讨CrystaX 的 Android NDK似乎对香草 Android NDK 有扩展的。
注: __GXX_EXPERIMENTAL_CXX0X__通过添加定义 -std=gnu++11 到 APP_CXXFLAGS 或 LOCAL_CXXFLAGS
详细测试日志:使用 NDK 版本 r8e 生成
jni/Application.mk:
APP_STL := gnustl_static
APP_CXXFLAGS += -std=gnu++11
NDK_TOOLCHAIN_VERSION := 4.7
jni/Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= cxx11
LOCAL_SRC_FILES := cxx11.cpp
include $(BUILD_EXECUTABLE)
jni/cxx11.cpp:
#include <iostream>
#include <string>
int main(int argc, char* argv[]) {
#if defined(__GXX_EXPERIMENTAL_CXX0X__)
std::cout<<"__GXX_EXPERIMENTAL_CXX0X__ defined."<<std::endl
#else
std::cout<<"__GXX_EXPERIMENTAL_CXX0X__ not defined."<<std::endl
#endif
#if defined(_GLIBCXX_USE_C99)
std::cout<<"_GLIBCXX_USE_C99 defined."<<std::endl
#else
std::cout<<"_GLIBCXX_USE_C99 not defined."<<std::endl
#endif
#if defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)
std::cout<<"_GLIBCXX_HAVE_BROKEN_VSWPRINTF defined."<<std::endl
#else
std::cout<<"_GLIBCXX_HAVE_BROKEN_VSWPRINTF not defined."<<std::endl
#endif
#if (defined(__GXX_EXPERIMENTAL_CXX0X__) &&defined(_GLIBCXX_USE_C99) \
&&!defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF))
std::string s="1"
std::cout<<"ll:"<<std::stoll(s)<<std::endl<<"ul:"<<std::stoul(s)<<std::endl
#else
std::cout<<"No support for stoll/stoul."<<std::endl
#endif
return(0)
}
Nexus 4 (Android 4.3) 上的输出:
u0_a51@mako:/ $ /data/local/tmp/cxx11
__GXX_EXPERIMENTAL_CXX0X__ defined.
_GLIBCXX_USE_C99 not defined.
_GLIBCXX_HAVE_BROKEN_VSWPRINTF not defined.
No support for stoll/stoul.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)