我有点疑惑。我在我的应用程序中使用 DayNight 主题(使用AppCompatDelegate.setDefaultNightMode()),但无法让它在我的MainActivity. (MainActivity扩展的FragmentActivity)看起来从未设置为深色主题 -它始终保持浅色主题。
我尝试直接在我的 MainActivity 中设置主题:
@Override
protected void onCreate(Bundle savedInstanceState) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
super.onCreate(savedInstanceState);
// create main activity.
}
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。
我已使用 ?attr/colorReference 正确设置了布局文件中的所有颜色。有谁知道这里出了什么问题?
编辑: 我的 styles.xml 如下:
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<!--Default typeface and colors:-->
<item name="android:typeface">monospace</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="colorAccentDarker">@color/colorAccentDarker</item>
<item name="colorAccentDarker_80percent">@color/colorAccentDarker_80percent</item>
<!--Show people's own wallpaper background-->
<item name="android:windowShowWallpaper">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud) 我在Play商店中有很多基于活动的简单应用程序.两天后,我尝试用Fragments做我的第一步.我还是不明白.我已经阅读了大部分关于Fragments的所有文档,博客和指南,但是我的愚蠢的简单测试应用程序拒绝以MyActivity上的ClassNotFoundException开头.
所以这就是我到目前为止所做的:
起始的FragmentActivity称为MyActivity:
public class MyActivity extends FragmentActivity {
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.myactivity);
}
}
Run Code Online (Sandbox Code Playgroud)
这是layout/myactivity.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<fragment
class="com.test.app.Table1List"
android:id="@+id/table1list"
android:layout_height="match_parent"
android:layout_width="match_parent" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这是ListFragment及其XML文件:
public class Table1List extends ListFragment {
@Override
public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) {
if (viewGroup == null) {
return null;
}
return layoutInflater.inflate(R.layout.table1list, viewGroup);
}
}
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ListView
android:drawSelectorOnTop="false"
android:fastScrollEnabled="true"
android:id="@id/android:list"
android:layout_height="fill_parent"
android:layout_width="fill_parent" />
<TextView
style="@style/TextViewMedium"
android:id="@id/android:empty"
android:text="@string/txt_noresult" …Run Code Online (Sandbox Code Playgroud) 我尝试使用Android兼容性库(或现在称为支持库)v4用于预蜂窝式Android设备.我理解,我应该使用FragmentActivity类,而不是使用Fragment类.根据我能找到的所有教程,我可以像在Fragment类中一样使用onCreateView方法:
public View onCreateView(LayoutInflater inflater,ViewGroup容器,Bundle savedInstanceState)
但是,FragmentActivity中的onCreateView方法似乎有所不同.我继承的是:
public View onCreateView(String name,Context context,AttributeSet attrs)
此版本实际上列在FragmentActivity类的Android参考中.
似乎我找到的所有教程都没有说明这种差异,而且所有教程都在Fragment类中调用它.我在这里误以为我应该以某种方式调用Fragment类版本的onCreateView吗?
我在片段活动中运行setText命令,尝试在父活动中设置textView的文本,但它不起作用.有任何想法吗?
TextView text = (TextView) getView().findViewById(R.id.status);
text.setText("Text from a fragment");
Run Code Online (Sandbox Code Playgroud)
我在eclipse中没有收到错误,但是在运行时我得到了一个空指针异常.当然它发生在我setText的行.关于如何做到这一点的任何想法?
我正在扩展片段,我得到这个错误说,该方法findViewById(int)未定义类型宋.
findViewById上的进度条和webview都出现错误.
public class Song extends Fragment{
ProgressBar progressBar;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View myFragmentView = inflater.inflate(R.layout.song, container, false);
return myFragmentView;
progressBar = (ProgressBar)findViewById(R.id.progressBar);
final WebView mWebView = (WebView)findViewById(R.id.Browsery);
mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.loadUrl("....");
mWebView.setWebViewClient(new WebViewClient(){
public void onPageFinished(WebView view, String url){
progressBar.setVisibility(View.INVISIBLE);
}
});
Run Code Online (Sandbox Code Playgroud)
我需要帮助
谢谢.
我创建了一个MainActivity,它包含3个可滚动的选项卡(使用ViewPager).现在,这3个标签中的每一个都是片段.另外,我正在使用ActionBarSherlock(ABS).
对于1st Fragment,我创建了以下类:
public class Fragment_1 extends SherlockFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View v = inflater.inflate(R.layout.fragment1, container, false);
return v;
/* R.layout.fragment1 only contains a TextView. */
}
}
Run Code Online (Sandbox Code Playgroud)
对于第二个片段,我想扩展FragmentActivity,如下所示.
public class Fragment_2 extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment2);
}
}
Run Code Online (Sandbox Code Playgroud)
第3个片段与第一个片段相同.
但是当我启动应用程序时,它会崩溃.那么,我是否在为Fragment_2类扩展FragmentActivity时错了?将FragmentActivity甚至Activity扩展到片段类是不合法的吗?如果没有,这里有什么问题?
谢谢.
编辑:在@ CommonsWare的回答之后,我更新了我的课程如下:
public class Fragment_2 extends SherlockFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button send = …Run Code Online (Sandbox Code Playgroud) android android-fragments android-activity android-fragmentactivity
我一直在尝试在android中构建一个Master-Detail f low但想要将其中一个细节片段更改为不同的片段.由于这是我的第一个Android应用程序之一,我只是想在这个新片段上显示一张图片.为此,我构建了以下两个类
1)片段类(显示要显示的图片)
package com.userName.miscapp;
import com.userName.miscapp.dummy.DummyContent;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class PictureFragment extends Fragment {
// Default Copy Constructor for the fragment
public PictureFragment() {
}
@Override
public void onCreate ( Bundle savedInstanceState )
{
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView ( LayoutInflater inflater , ViewGroup container , Bundle savedInstanceState )
{
View rootView = inflater.inflate(R.layout.fragment_simple_picture, container, false);
return rootView;
}
}
Run Code Online (Sandbox Code Playgroud)
2)活动显示相同
package com.userName.miscapp;
import android.os.Bundle;
import android.app.Activity;
import android.support.v4.app.Fragment; …Run Code Online (Sandbox Code Playgroud) 请帮忙!当我试图写onCreate方法时.
此行有多个标记
MainActivityParent类型中的onCreate方法只能设置public/protected/private之一
方法断点:MainActivityParent [entry] - onCreate(Bundle)
覆盖android.support.v4.app.FragmentActivity.onCreate
这里:
package com.example.seledkarelease1;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.concurrent.ExecutionException;
import org.apache.http.util.LangUtils;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.DialogFragment;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks;
import com.google.android.gms.common.GooglePlayServicesClient.OnConnectionFailedListener;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMyLocationButtonClickListener;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
public class MainActivityParent …Run Code Online (Sandbox Code Playgroud) 我是一名IOS编码员,但我正在尝试学习一些android,但我遇到了问题.
我有以下课程:
package com.example.fragmenttabhostdemo;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Tab1 extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.tab1, container, false);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,控制台说:
java.lang.ClassCastException: com.example.fragmenttabhostdemo.Tab1 cannot be cast to android.support.v4.app.Fragment
Run Code Online (Sandbox Code Playgroud)
我做错了什么想法?我认为,当我尝试为我的Android应用程序布局制作片段活动并向主机添加一些选项卡时,会出现问题:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabHost = (FragmentTabHost) findViewById(R.id.tabhost);
tabHost.setup(this, getSupportFragmentManager(), R.id.tabcontent);
tabHost.addTab(tabHost.newTabSpec("Tab1").setIndicator("Lengueta 1"), Tab1.class, null);
tabHost.addTab(tabHost.newTabSpec("Tab2").setIndicator("Lengueta 2"),
Tab2.class, null);
tabHost.addTab(tabHost.newTabSpec("Tab3").setIndicator("Lengueta 3"),
Tab3.class, null);
} …Run Code Online (Sandbox Code Playgroud) 像这样问了很多问题,但是我尝试过的一切似乎都不起作用。本质上,我有一个主要活动,该活动根据用户单击的内容(默认为home片段)来调用不同的片段。我想在标题栏上有一个后退按钮,以返回上一个片段。
我的片段是从主要活动中调用的,如下所示:
Fragment fragment = null;
fragment = new nextFragment();
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frame_container, fragment).addToBackStack(null);
fragmentTransaction.commit();
fragmentTransaction.addToBackStack(null);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
Run Code Online (Sandbox Code Playgroud)
但是由于不赞成使用ActionBarActivity活动,因此我需要扩展AppCompatActivity而不是FragmentActivity,以便可以使用actionbar(我假设这是我需要的)。但是,然后我无法切换到我的片段。因此,有人知道我如何在片段中实现后退按钮,或者在这种情况下如何使用AppCompatActivity。谢谢你的帮助。
android back-button android-fragments android-fragmentactivity