本人学习Android一周,有三个问题烦恼了好几天  网上查了不少资料 研究了很久但没成功    求解答!!
一,ListView 用了两种方法也跳转不了(点击一下条目出问题has stoped unexpected)。以下贴上代码
java源码:
package lin.MytestListView3;import java.util.ArrayList;import java.util.HashMap;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.ContextMenu;import android.view.MenuItem;import android.view.View;import android.view.ContextMenu.ContextMenuInfo;import android.view.View.OnCreateContextMenuListener;import android.widget.AdapterView;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.AdapterView.OnItemClickListener;public class MytestListView3Activity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//绑定Layout里面的ListViewListView list = (ListView) findViewById(R.id.ListView01);//生成动态数组,加入数据ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();for(int i=0;i<10;i++){HashMap<String, Object> map = new HashMap<String, Object>();map.put("ItemImage", R.drawable.checked);//图像资源的IDmap.put("ItemTitle", "Level "+i);map.put("ItemText", "Finished in " +i+" Min 54 Secs, 70 Moves! ");listItem.add(map);}//生成适配器的Item和动态数组对应的元素,这里用SimpleAdapter作为ListView的数据源//如果条目布局比较复杂,可以继承BaseAdapter来定义自己的数据源。SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//数据源 R.layout.listview_item,//ListItem的XML实现//动态数组与ImageItem对应的子项 new String[] {"ItemImage","ItemTitle", "ItemText"}, //ImageItem的XML文件里面的一个ImageView,两个TextView IDnew int[] {R.id.ItemImage,R.id.ItemTitle,R.id.ItemText});//添加并且显示list.setAdapter(listItemAdapter);//添加点击list.setOnItemClickListener(new OnItemClickListener() {//第一种测试方法:@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {setTitle("点击第"+arg2+"个项目");//生成一个Intent对象Intent intent = new Intent();//在Intent对象当中添加一个键值对 intent.putExtra("testIntent", "123");//设置Intent对象要启动的Activityintent.setClass(MytestListView3Activity.this, MyIntenttest.class);//通过Intent对象启动另外一个ActivityMytestListView3Activity.this.startActivity(intent);}/*第二种测试方法switch():@Override public void onItemClick(AdapterView<?> parent, View view,int position, long id) { //生成一个Intent对象Intent intent = new Intent();switch(position){case 0: intent.setClass(MytestListView3Activity.this, MyIntenttest.class);break;}MytestListView3Activity.this.startActivity(intent);} */ });//添加长按点击list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {menu.setHeaderTitle("长按菜单-ContextMenu"); menu.add(0, 0, 0, "弹出长按菜单0");menu.add(0, 1, 0, "弹出长按菜单1"); }}); } //长按菜单响应函数@Overridepublic boolean onContextItemSelected(MenuItem item) {setTitle("点击了长按菜单里面的第"+item.getItemId()+"个项目"); return super.onContextItemSelected(item);}}
package lin.MytestListView3;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.widget.TextView;public class MyIntenttest extends Activity{private TextView myTextView=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.jobx);//Intent intent = getIntent();//String value = intent.getStringExtra("testIntent");myTextView=(TextView)findViewById(R.id.myTextView); //myTextView.setText("This is my second TestView");//myTextView.setText(value);}}
main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"><ListView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/ListView01"/></LinearLayout>listview_item.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout android:id="@+id/RelativeLayout01" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:paddingBottom="4dip" android:paddingLeft="12dip"android:paddingRight="12dip"><ImageView android:paddingTop="12dip"android:layout_alignParentRight="true"android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ItemImage"/> <TextView android:text="TextView01" android:layout_height="wrap_content" android:textSize="20dip" android:layout_width="fill_parent" android:id="@+id/ItemTitle"/><TextView android:text="TextView02" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_below="@+id/ItemTitle" android:id="@+id/ItemText"/></RelativeLayout>jobx.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" >    <TestView         android:id="@+id/myTextView"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        /></LinearLayout>上面的工程不能从MytestListView3Activity跳转到 MyIntenttest  ,应该是我忽略了一些细节吧。(ps:在manifest已经添加了MyIntenttest)二,自定义的TabHost 在也不能用intent实现跳转,不知道哪里出问题,但如果继承TabActivity 就可以用intent跳转。有什么需要注意的呢?
以下是代码:
StudentYard.java
package com.easymorse;import android.app.Activity;import android.app.TabActivity;import android.content.Intent;import android.os.Bundle;import android.view.Window;import android.widget.TabHost;public class StudentYard extends TabActivity {TabHost tabHost; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);requestWindowFeature(Window.FEATURE_NO_TITLE);//final TabHost tabHost = getTabHost();tabHost = (TabHost)this.findViewById(R.id.tabhost01);tabHost.setup();//调用tabhost.setup()方法初始化tabhosttabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("教学视频").setContent(new Intent(this, TeachfilmList.class)));tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("学习文档").setContent(new Intent(this, StudydocumentList.class)));tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("招聘资讯").setContent(new Intent(this, JobList.class)));}}TeachfilmList.java  (ps:这里三个activity 都一样故只贴出来一个activity)
import android.app.ListActivity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;public class TeachfilmList extends ListActivity {private String[]texts= new String[] { "c1", "c2","c3" };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, texts));}}
main.xml
<?xml version="1.0" encoding="utf-8"?><TabHost xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/tabhost01" android:layout_width="fill_parent"android:layout_height="fill_parent"><LinearLayout android:orientation="vertical"android:layout_width="fill_parent" android:layout_height="fill_parent"android:padding="5dp"><TabWidget android:id="@android:id/tabs"android:layout_width="fill_parent" android:layout_height="wrap_content" /><FrameLayout android:id="@android:id/tabcontent"android:layout_width="fill_parent" android:layout_height="fill_parent"android:padding="5dp"> </FrameLayout></LinearLayout></TabHost>
上面自定义的TabHost 不能实现跳转,如果是继承TabActivity就能实现跳转,为什么呢?三,我们设置TabHost的头部(标题,图片)和内容 都是在java文件里添加的 如果要修改标题,内容字体颜色等属性能在xml里修改吗?怎么设置属性 ?上面的三个问题我知道都是很菜的问题,希望有人能帮我解答,感激不尽!!!

解决方案 »

  1.   

    用LogCat跟踪看看,报的啥错。。贴大段的代码效率不高。。
      

  2.   

    刚学习  不大懂怎么用logcat 查看问题  请赐教,以下是 logcat 的提示:
    04-23 15:20:16.684: D/AndroidRuntime(226): Shutting down VM
    04-23 15:20:16.696: W/dalvikvm(226): threadid=3: thread exiting with uncaught exception (group=0x4001aa28)
    04-23 15:20:16.696: E/AndroidRuntime(226): Uncaught handler: thread main exiting due to uncaught exception
    04-23 15:20:16.734: E/AndroidRuntime(226): java.lang.RuntimeException: Unable to start activity ComponentInfo{lin.MytestListView3/lin.MytestListView3.MyIntenttest}: android.view.InflateException: Binary XML file line #7: Error inflating class TestView
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.app.ActivityThread.access$2100(ActivityThread.java:116)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.os.Handler.dispatchMessage(Handler.java:99)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.os.Looper.loop(Looper.java:123)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.app.ActivityThread.main(ActivityThread.java:4203)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at java.lang.reflect.Method.invokeNative(Native Method)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at java.lang.reflect.Method.invoke(Method.java:521)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at dalvik.system.NativeStart.main(Native Method)
    04-23 15:20:16.734: E/AndroidRuntime(226): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class TestView
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:575)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:617)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:313)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.app.Activity.setContentView(Activity.java:1620)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at lin.MytestListView3.MyIntenttest.onCreate(MyIntenttest.java:15)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
    04-23 15:20:16.734: E/AndroidRuntime(226):  ... 11 more
    04-23 15:20:16.734: E/AndroidRuntime(226): Caused by: java.lang.ClassNotFoundException: android.view.TestView in loader dalvik.system.PathClassLoader@43757cc8
    04-23 15:20:16.734: E/AndroidRuntime(226):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.view.LayoutInflater.createView(LayoutInflater.java:465)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:543)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
    04-23 15:20:16.734: E/AndroidRuntime(226):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:562)
    04-23 15:20:16.734: E/AndroidRuntime(226):  ... 20 more
    04-23 15:20:16.774: I/dalvikvm(226): threadid=7: reacting to signal 3
    04-23 15:20:16.846: I/dalvikvm(226): Wrote stack trace to '/data/anr/traces.txt'
      

  3.   

    第一个问题已经解决了,在logcat里发现问题了。我很二的拼写错了。感谢paulorwys新发现一个问题,奇奇怪怪的  同样的代码 在两个工程中一个能运行 一个不能运行。第二个问题 将继承TabActivity改为继承Activity,修改获得TabHost代码。再xml添加自定义TabHost运行不成功 ,求打救!!第三个问题 貌似 真的没办法在xml 修改tabhost属性