我在Android中玩片段.
我知道我可以使用以下代码更改片段:
FragmentManager fragMgr = getSupportFragmentManager();
FragmentTransaction fragTrans = fragMgr.beginTransaction();
MyFragment myFragment = new MyFragment(); //my custom fragment
fragTrans.replace(android.R.id.content, myFragment);
fragTrans.addToBackStack(null);
fragTrans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragTrans.commit();
Run Code Online (Sandbox Code Playgroud)
我的问题是,在Java文件中,如何获取当前显示的Fragment实例?
我git push
我的工作到远程Git仓库.
每个人push
都会提示我输入username
和password
.我希望每次推送都能避免它,但如何配置以避免它?
我正在使用三星galaxy nexus手机(Android 4.0平台).
我正在开发Ubuntu Linux操作系统上的Android应用程序.我想直接在三星手机设备上运行我的应用程序,所以我执行了以下设置步骤:
在我的项目AndroidManifest.xml
文件中,添加android:debuggable="true"
到<application>
元素中
在设备上,在" 设置">"安全性"中启用" 未知来源"
在设备上,在设置>开发人员选项中启用USB调试
在我的计算机上,/etc/udev/rules.d/51-android.rules
使用以下内容创建了该文件:
SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev"
Run Code Online (Sandbox Code Playgroud)在我的计算机上,运行该chmod a+r /etc/udev/rules.d/51-android.rules
命令
然后,在我的计算机上,我打开了一个终端并执行了adb devices
命令,我得到了:
List of devices attached
???????????? no permissions
Run Code Online (Sandbox Code Playgroud)
由于我没有看到我的设备,只能???????????? no permissions
运行以下命令:
adb kill-server
adb start-server
adb devices
Run Code Online (Sandbox Code Playgroud)
但我仍然得到:
List of devices attached
???????????? no permissions
Run Code Online (Sandbox Code Playgroud)
为什么?我错过了什么?
我正在开发Android v2.2应用程序.
我有一个片段.
在onCreateView(...)
我的片段类的回调中,我将布局扩展到片段,如下所示:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.login, null);
return view;
}
Run Code Online (Sandbox Code Playgroud)
上面膨胀的布局文件是(login.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Username" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Username" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我想设置一个paddingTop
上面的<LinearLayout>
元素,我想在Java代码中执行它而不是在xml中执行它.
如何设置paddingTop
到<LinearLayout>
我的片段Java类代码?
android padding android-widget android-emulator android-layout
如何在backstack中添加最新的片段实例(如果我不知道片段标签和id)?
FragmentManager fragManager = activity.getSupportFragmentManager();
FragmentTransaction fragTransacion = fragMgr.beginTransaction();
/****After add , replace fragments
(some of the fragments are add to backstack , some are not)***/
//HERE, How can I get the latest added fragment from backstack ??
Run Code Online (Sandbox Code Playgroud) 我AlertDialog
在我的活动中做了一个简单的事:
View view = layoutInflater.inflate(R.layout.my_dialog, null);
AlertDialog infoDialog = new AlertDialog.Builder(MyActivity.this)
.setView(view)
.create();
infoDialog.show();
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,对话框显示在屏幕的中心(大约).
我想知道,如何自定义对话框位置以使其显示在顶部操作栏下?(无论如何改变对话的重力或某些东西?)以及如何根据我的代码做到这一点?
android android-widget android-emulator android-intent android-layout
我正在开发我的Android项目,在我删除了一个未使用的库后,我得到了错误:
myproject/gen already exists but is not a source folder. Convert to a source folder or rename it
Run Code Online (Sandbox Code Playgroud)
在我的Activity代码中,R.java
无法解析所有资源.
我试过,右键单击我的项目=> Java Build Path =>在"Source"选项卡下,我添加了gen/as source.但这对问题没有帮助......
为什么,如何摆脱这个问题?
---- ----更新
我发现,eclipse还抱怨"Project没有project.properties文件!编辑项目属性来设置一个." ,但我的项目下有project.properties文件.为什么抱怨?我已经清理了项目并"修复项目属性",但它没有帮助.
android android-widget android-emulator android-intent android-layout
我有一个<ScrollView>
布局:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_scrollview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<EditText
android:id="@+id/input_one"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:inputType="number" >
<EditText
android:id="@+id/input_two"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:inputType="number" >
<EditText
android:id="@+id/input_three"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:inputType="number" >
<Button
android:id="@+id/ok_btn"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="@string/ok_str" />
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
如上所示,简单布局包含三个输入字段和一个"确定"按钮.
我使用上面的布局运行我的应用程序,当我点击第一个输入字段(@+id/input_one
)时,软键盘将从屏幕底部弹出,它隐藏第三个输入字段和"确定"按钮.
自从我使用以来<ScrollView>
,我想我可以向上滚动页面以查看第三个输入字段和软键盘隐藏的"确定"按钮,但页面不可滚动.为什么?如何摆脱它?基本上,我想看到每个输入字段和"确定"按钮,甚至软键盘弹出.
android android-keypad android-intent android-layout android-scrollview
我有一个片段 ;
MyFragment myFrag = new MyFragment();
Run Code Online (Sandbox Code Playgroud)
我把bundle数据放到这个片段:
Bundle bundle = new Bundle();
bundle.putString("TEST", "test");
myFrag.setArguments(bundle);
Run Code Online (Sandbox Code Playgroud)
然后,我用这个替换旧片段并放在backstack上:
//replace old fragment
fragmentTransaction.replace(R.id.fragment_placeholder, myFrag, "MyTag");
//put on backstack
fragmentTransaction.addToBackStack(null);
//commit & get transaction ID
int transId = fragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud)
后来,我使用上面的事务ID()弹出backstacktransId
:
//pop the transaction from backstack
fragmentManager.popBackStack(transId,FragmentManager.POP_BACK_STACK_INCLUSIVE);
Run Code Online (Sandbox Code Playgroud)
后来,我再次将bundle数据作为参数设置到我的fragment(myFrag
):
//Got Java.lang.IllegalStateException: fragment already active
myFrag.setArguments(bundle);
Run Code Online (Sandbox Code Playgroud)
如您所见,我的上述代码异常Java.lang.IllegalStateException: fragment already active
.虽然我已经从backstack弹出了它的事务,但我不明白为什么 myFrag
仍然有效.无论如何,因为我得到了例外,我认为我别无选择,只能取消激活片段,所以,我做了:
Fragment activeFragment = fragMgr.findFragmentByTag("MyTag");
fragmentTransaction.remove(activeFragment); …
Run Code Online (Sandbox Code Playgroud) android android-emulator android-intent android-layout android-fragments