我正在尝试将SeekBar连接到片段中的MediaPlayer,但runnable根本没有运行.我在其中放了一个log.i来查看它是否运行但根本没有任何反应.
我将Handler声明为全局变量:
Handler seekHandler;
SeekBar sBar;
Run Code Online (Sandbox Code Playgroud)
然后在onCreateView上:
seekHandler = new Handler();
sBar = (SeekBar) v.findViewById(R.id.seekBar1);
Run Code Online (Sandbox Code Playgroud)
可运行:
Runnable run = new Runnable() {
@Override
public void run() {
sBar.setMax(mp.getDuration());
sBar.setProgress(mp.getCurrentPosition());
Log.i("TAG", "I'm running");
seekHandler.postDelayed(this, 25);
}
};
Run Code Online (Sandbox Code Playgroud)
mp变量是一个MediaPlayer.问题是Runnable甚至没有执行过一次.我在活动中的类似应用程序中使用完全相同的代码,它的工作完全正常.这是因为runnables在片段中的行为方式不同吗?此外,我正在使用带有ViewPager和2片段的TabLayout,如果这会影响其中任何一个.
我有一点问题.我正在尝试使用片段创建一个布局,但是当我调用setAdapter方法时,我有一个Java NullPointerException,我找不到错误.谢谢大家!
public static class DemoObjectFragment extends Fragment {
public static final String ARG_OBJECT = "object";
private List<RowItem> rowItems;
private static Integer[] images = {
R.drawable.red,
R.drawable.red,
R.drawable.red,
R.drawable.red,
R.drawable.red,
R.drawable.red,
R.drawable.red,
R.drawable.red
};
ListView lv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_collection_object, container, false);
Bundle args = getArguments();
lv = (ListView) this.getActivity().findViewById(R.id.myList);
rowItems = new ArrayList<RowItem>();
String[] titles = {"Movie1","Movie2","Movie3","Movie4","Movie5","Movie6","Movie7","Movie8"};
String[] descriptions = {"First Movie","Second movie","Third Movie","Fourth Movie","Fifth Movie",
"Sixth Movie","Seventh Movie","Eighth …Run Code Online (Sandbox Code Playgroud) android oncreate android-listview android-fragments listview-adapter
我有一个带有操作栏的片段活动,当您单击主屏幕图标时,该操作栏应该打开导航栏,其中三个线图标代表Android的抽屉开口.
出于某种原因,我可以点击按钮但不打开抽屉...我可以使用滑动手势打开抽屉......
public class MainDrawer2 extends FragmentActivity
{
private static final String EXTRA_NAV_ITEM = "extraNavItem";
private static final String STATE_CURRENT_NAV = "stateCurrentNav";
private ActionBarDrawerToggle mDrawerToggle;
private DrawerLayout mDrawerLayout;
private NavDrawerListAdapter mDrawerAdapter;
private ListView mDrawerList;
private CharSequence mTitle;
private CharSequence mDrawerTitle;
private MainNavItem mCurrentNavItem;
public static Intent createLaunchFragmentIntent(Context context, MainNavItem navItem)
{
return new Intent(context, MainDrawer2.class)
.putExtra(EXTRA_NAV_ITEM, navItem.ordinal());
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
mTitle = mDrawerTitle = getTitle();
mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
mDrawerList = (ListView)findViewById(R.id.drawer);
getActionBar().setDisplayHomeAsUpEnabled(true);
enableHomeButtonIfRequired();
mDrawerAdapter …Run Code Online (Sandbox Code Playgroud) 我正在尝试整理一个简单的视图寻呼机应用程序,我希望将其扩展.
目前,当我调用my ViewPager vPager = (ViewPager) findViewById(R.id.viewPager);的onCreate方法时,FragmentActivity它返回null.
以下是完整的解释:
我的GUI xml看起来像这样:
\res\layout\view_fragment.xml
<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:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
相应的Fragment类如下所示:
public class ViewFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.view_fragment, container, false);
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个像这样的寻呼机xml:
\res\layout\view_pager.xml
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)
我的Pager Activity看起来像这样:
public class ScreenPagerActivity extends FragmentActivity {
private ViewPager vPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用搜索栏,以便用户可以调整片段中edittext框的值。这是我使用它的地方:
...
//NOTE: This is in the onCreateView() method for a Fragment
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
seekBar.setProgress(seekBar.getProgress() + 1);
editText.setText(String.valueOf(seekBar.getProgress()));
//Hidden method call not needed to be visible...
//Notice the InputMethodManager, also, this is line 197...
InputMethodManager imm = (InputMethodManager) context.getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(seekBar.getWindowToken(), 0);
}
});
...
Run Code Online (Sandbox Code Playgroud)
这是Logcat的输出:
03-09 00:00:41.164 573-573/com.hidden.hidden E/AndroidRuntime? FATAL EXCEPTION: main
java.lang.NullPointerException
at com.hidden.hidden.hidden.onClick(Hidden.java:197)
at android.view.View.performClick(View.java:3480)
at android.view.View$PerformClick.run(View.java:13983)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4340)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511) …Run Code Online (Sandbox Code Playgroud) 我一直试图从listview-onclicklistener获取一个id到三个标签片段.用户首先单击myTicketsFragment,然后转到包含3个可滑动标签的详细信息页面.这些视图由名为TicketActivity的一个单独活动"托管".所以目前我已经成功地将数据从片段传递到TicketActivity,但我不能做得更远.一直在寻找2个小时但仍然没有结果..
这是我的代码:
myTicketsFragment:将setOnItemClickListener中的数据传递给制表符活动
public void onItemClick(AdapterView<?> parentView,
View childView, int position, long id) {
Bundle bundle = new Bundle();
bundle.putInt("ticketId", myTickets.get(position).getId());
Intent ticketDetail = new Intent(getActivity(), TicketActivity.class);
ticketDetail.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
ticketDetail.putExtras(bundle);
startActivity(ticketDetail);
}
Run Code Online (Sandbox Code Playgroud)
TicketActivity:接收数据并将其传递给3个选项卡
private ViewPager viewPager;
private TicketTabsPagerAdapter mAdapter;
private ActionBar actionBar;
// Tab titles
private String[] tabs = { "Info", "Intern", "Extern" };
public TicketInfoFragment ticketInfoFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabs);
// Receive data
Bundle bundle = getIntent().getExtras();
int ticketId = bundle.getInt("ticketId");
// …Run Code Online (Sandbox Code Playgroud) 在我的项目中,我使用三个选项卡在单个屏幕中显示三个活动.选项卡1 - 地图
选项卡2 - 游戏
选项卡3 - Imageflipper
当我选择系列中的选项卡,如地图--->游戏---> Imageflipper然后它工作正常.
但当我选择回到任何选项卡,如地图--->游戏---> Imageflipper --- >>游戏,然后它显示错误 -
二进制XML文件行#10:错误膨胀类片段.
模拟器的屏幕截图:
http://s9.postimg.org/jdjsxnswf/Untitled.png
这是我的logcat.
03-26 05:48:09.876: D/AndroidRuntime(1094): Shutting down VM
03-26 05:48:09.876: W/dalvikvm(1094): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
03-26 05:48:09.936: E/AndroidRuntime(1094): FATAL EXCEPTION: main
03-26 05:48:09.936: E/AndroidRuntime(1094): android.view.InflateException: Binary XML file line #10: Error inflating class fragment
03-26 05:48:09.936: E/AndroidRuntime(1094): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
03-26 05:48:09.936: E/AndroidRuntime(1094): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
03-26 05:48:09.936: E/AndroidRuntime(1094): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
03-26 05:48:09.936: E/AndroidRuntime(1094): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
03-26 05:48:09.936: E/AndroidRuntime(1094): at com.example.image_changer.TopRatedFragment.onCreateView(TopRatedFragment.java:15) …Run Code Online (Sandbox Code Playgroud) 我的所有主题都在我的dialogfragment背景下工作.我试图让我的dialogFragment背景变黑,但我做错了什么.
这里到目前为止我在主题xml中得到了什么(请注意,我将它的顶部和底部封顶):
<style name="easydealtheme" parent="@style/_easydealtheme"/>
<style name="_easydealtheme" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:editTextBackground">@drawable/easydealtheme_edit_text_holo_light</item>
<item name="android:dropDownListViewStyle">@style/Listviewdropdowneasydealtheme</item>
<item name="android:textViewStyle">@style/Textvieweasydealtheme</item>
<item name="android:editTextStyle">@style/Edittexteasydealtheme</item>
<item name="android:alertDialogTheme">@style/Dialogeasydealtheme</item>
...
Run Code Online (Sandbox Code Playgroud)
这是我在我的对话框的Styles xml中得到的:
<style name="Dialogeasydealtheme" parent="android:Theme.Holo.Dialog">
<item name="android:textColor">#FFFFFF</item>
<item name="android:windowBackground">@color/test</item>
</style>
Run Code Online (Sandbox Code Playgroud)
以下是显示dialogFragment的代码:
public static void ShowPhotoDialog(String title,File photoFile, FragmentManager fragM)
{
FragmentPhotoDialog photoD = new FragmentPhotoDialog();
FragmentTransaction fTX = fragM.BeginTransaction();
photoD.SetStyle(DialogFragmentStyle.NoFrame, EasyDeal_Android.Resource.Style.easydealtheme);
photoD.SetTile(title);
photoD.SetPhotoFile(photoFile);
photoD.Show(fTX, "Dialog");
}
Run Code Online (Sandbox Code Playgroud)
这里的结果不起作用(白色应为黑色): 
我有以下代码:
import android.app.Fragment;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
import android.widget.TextView;
public class MainFragment extends Fragment {
protected AlphaAnimation fadeIn = new AlphaAnimation(0.0f , 1.0f );
public MainFragment(){}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.main_fragment, container, false);
String fontPath = "fonts/roboto.ttf";
Typeface font = Typeface.createFromAsset(getActivity().getAssets(), fontPath);
TextView txt1 = (TextView) rootView.findViewById(R.id.headerTextView);
txt1.setTypeface(font);
TextView txt2 = (TextView) rootView.findViewById(R.id.instructions);
txt2.setTypeface(font);
txt1.startAnimation(fadeIn);
txt2.startAnimation(fadeIn);
fadeIn.setDuration(1400);
fadeIn.setFillAfter(true);
Rect rectangle = new …Run Code Online (Sandbox Code Playgroud) 我有一个片段,必须是viewPager中的布局之一.我的片段有一个listView,应该填充一些常量文本.如下所示:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Display_Rows();
}
private void Display_Rows() {
Log.d(TAG, "Displaying Rows...");
final ListView lv =(ListView) rootView.findViewById(R.id.Asset_Scanned_listView);
final List<String> lst = new ArrayList<String>();
lst.add("1");
lst.add("2");
lst.add("3");
lst.add("4");
lst.add("5");
lst.add("6");
lst.add("7");
lst.add("8");
lst.add("9");
lst.add("10");
ArrayAdapter<String> ArAd =new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,lst);
lv.setAdapter(ArAd);
lv.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> arg0, View arg1,int arg2, long arg3){
Toast.makeText(getActivity(), String.valueOf(((TextView)arg1).getText()), Toast.LENGTH_SHORT).show();
}});
Log.d(TAG, "Rows Displayed");
}
Run Code Online (Sandbox Code Playgroud)
这是我的xml的一部分:
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/RLayoutSort"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" >
<ListView
android:id="@+id/Asset_Scanned_listView"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
但我的listView只显示第一个文本.任何人都可以帮我解决我的代码中的错误吗?