许多Fragment在网上找到的教程(比如这个)使用FragmentActivity.它似乎是静态的使用方式Fragment,而不是用于在普通容器中FragmentTransaction加载Fragments 的动态方式Activity.
我正在使用API 12并且FragmentActivity不在那里(它在android.support.v4.app).
所以,如果我不使用Android支持包,我只能Fragment动态管理,对吧?为什么FragmentActivity消失了?
谢谢
我是否需要在片段onDestroy事件中对asyncTask调用cancel,以防异步任务在用户点击后退按钮并离开活动时尚未完成?
我是否还需要检查我的asyncTask的现有实例是否仍在运行,以防上次访问fragmentActivity的asyncTask仍在运行,尚未完成或尚未取消?
android android-asynctask android-fragments android-fragmentactivity
我的问题:在FragmentActivity中使用onTouchEvent是否有解决办法?
我的情况:我正在编写一个简单的手电筒应用程序,我有一个FragmentActivity,用户可以在颜色之间滑动(整个屏幕只有一种颜色.这个应用程序是为了个人改进).我希望能够onLongPress为选项做一个事件,一个onDoubleTap隐藏导航栏的事件,最重要的是一个触摸事件来控制应用程序的亮度(我想让用户上下滚动亮度变化,这里的任何想法欢迎!onFling活动对此有利吗?)
我已经试过:我有GestureDetector我的执行的SimpleOnGestureListener.我重写onTouchEvent的FragmentActivity,但我刚刚发现这个方法不会被调用的FragmentActivity(我还测试了这款用Log.print的方法,它从来没有所谓的).有解决方法吗?谢谢!
突出代码:
主要活动:
public class MainActivity extends FragmentActivity {
private GestureDetector gestureDetector;
private FragmentPagerAdapter mAdapter;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gestureDetector = new GestureDetector(getApplicationContext(), new MyGestureListener(getWindow()));
mAdapter = new ColorFragmentAdapter(getSupportFragmentManager(), getDefaultColorList());
ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager);
pager.setAdapter(mAdapter);
pager.setCurrentItem(Math.round(mAdapter.getCount() / 2)); //Set current …Run Code Online (Sandbox Code Playgroud) 我想改变我的扩展活动以扩展Fragment,但看到的错误包括:
bindService - >对于文件名,方法bindService(Intent,ServiceConnection,int)是未定义的,我的文件名从扩展Activity变为Fragment?
有人遇到同样的问题吗?我正在使用v4.support库进行开发
我是第4片段.在第4个片段视图中,当我点击取消按钮时,它会进入第2个片段.但我使用popBackStackImmediate它继续第3片段.
我知道有几个类似的问题.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, new LoginFragment()).commit();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.i(TAG, "DZActivity onSaveInstanceState");
}
@Override
public void onRequestStarted() {
DZActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.i(TAG, "DZActivity onRequestStarted");
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new ProgressFragment()).commit();
}
});
}
@Override
public void onSignIn(String accessToken) {
DZActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.i(TAG, "DZActivity onSignIn");
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new HomeFragment()).commit();
}
});
}
Run Code Online (Sandbox Code Playgroud)
按下后退我第二次启动我的应用程序,在按"登录"后,我得到:
08-07 18:02:54.609: I/DZActivity(3302): DZActivity onCreate
08-07 18:02:54.659: I/DZActivity(3302): DZActivity onResume …Run Code Online (Sandbox Code Playgroud) 我的Fragment有一个奇怪的问题,我在运行时没有错误(我正在使用Android Studio v8.7并且Gradle编译得很好)但是当我的应用程序在我的手机上运行它现在显示时,它看起来像一个空的活动.
Activity.class
package android.bignerdranch.com.criminalintent;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.os.Bundle;
import android.view.MenuItem;
public class CrimeActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_crime);
// These are Fragments from the app.v4 package, it's needed to make the app compatible with API < 11
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);
if(fragment == null) {
fragment = new Fragment();
fm.beginTransaction().add(R.id.fragmentContainer, fragment).commit();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if …Run Code Online (Sandbox Code Playgroud) Intent myIntent = new Intent(viewEnterChildExp.getContext(), MainActivityExpenses.class);
myIntent.putExtra("fromEnterChildExpenseToMainActivityExpenses", "true");
startActivity(myIntent);
finish();
Run Code Online (Sandbox Code Playgroud)
我正在使用上面的代码片段 fragment
该finish()是红色.
当我将鼠标光标放在它上面时,会弹出一个错误:
can resolve method finish()
Run Code Online (Sandbox Code Playgroud)
TIA!
我创建了一个带有操作栏菜单的片段,该菜单已显示但单击时无法正常工作.
这是我的片段:
public class ComposeFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_compose, container, false);
userName = (TextView) view.findViewById(R.id.user_name);
subjectSpinner = (Spinner) view.findViewById(R.id.subject_spinner);
sendButton = (Button) view.findViewById(R.id.send_btn);
messageEditText = (EditText) view.findViewById(R.id.message);
userName.setText(Ezcation.getInstance().userName);
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.compose_menu, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Log.e("Menu","Before Switch");
switch (item.getItemId()){
case R.id.sent:
Log.e("Menu","Sent");
if (messageEditText.getText().toString().equals("")){
messageEditText.setError("Please …Run Code Online (Sandbox Code Playgroud) 我的应用无法启动它安装后立即崩溃,我无法理解错误!
我为两个片段创建了两个recylcerView,它们附加在主活动xml文件中
错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.invincible.fragfrag, PID: 14384
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.invincible.fragfrag/com.invincible.fragfrag.MainActivity}: android.view.InflateException: Binary XML file line #14: Error inflating class android.support.v7.app.AlertController.RecycleListView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2521)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2601)
at android.app.ActivityThread.access$800(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5637)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class android.support.v7.app.AlertController.RecycleListView
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:757)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:288)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:143)
at com.invincible.fragfrag.MainActivity.onCreate(MainActivity.java:13)
at android.app.Activity.performCreate(Activity.java:6100) …Run Code Online (Sandbox Code Playgroud) xml android android-fragments android-fragmentactivity android-studio