首先请大家看一下这个代码public class MessageActivity extends Activity {
private TextView textview;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        textview = (TextView)this.findViewById(R.id.tv1);

String string = "Toast示例,当收到短信时,我们会提示,欢迎使用!";
textview.setTextSize(30);
textview.setText(string);

Button button = (Button) findViewById(R.id.button1);
/* 监听button的事件信息 */
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v)
{
DisplayToast("短信内容在这里显示");
}
});
    }
    
/* 显示Toast  */
public void DisplayToast(String str)
{
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
}
    public class SMSReceiver extends BroadcastReceiver
    {
     /*当收到短信时,就会触发此方法*/
    
    
         public void onReceive(Context context, Intent intent)
         {
           Toast.makeText(context, "asdasda", Toast.LENGTH_SHORT).show();
     }}}
问题来了,为什么我的虚拟器能收到短信  
但是那个OnReceiver()这个方法下面的消息提示没有呢,就是根本没出发这个OnReceiver()啊不明白,mainxml里面的权限我该设置都设置了,不然也不会接到短信的。。请问这是为什么呢。第二个问题 
public class ImageAdapter extends BaseAdapter
{
// 定义Context
private Context mContext;
// 定义整型数组 即图片源
private Integer[] mImageIds = 

R.drawable.img1, 
R.drawable.img2, 
R.drawable.img3, 
R.drawable.img4, 
R.drawable.img5, 

}; // 声明 ImageAdapter
public ImageAdapter(Context c)
{
mContext = c;
} // 获取图片的个数
public int getCount()
{
return mImageIds.length;
} // 获取图片在库中的位置
public Object getItem(int position)
{
return position;
} // 获取图片ID
public long getItemId(int position)
{
return position;
} public View getView(int position, View convertView, ViewGroup parent)
{
ImageView imageview = new ImageView(mContext);
int count = 0 ;
if(position==0){ count =2;}
else count = 3;

// 给ImageView设置资源
imageview.setImageResource(mImageIds[count]);
// 设置布局 图片120×120显示
imageview.setLayoutParams(new Gallery.LayoutParams(120, 120));
// 设置显示比例类型
imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);
return imageview;
}
}
}
这个是那个类 的代码,我只想问那个getView中的position到底是几,或者说它可以代表0,1,2,3,4? 那5个图片是怎么按顺序添加到ImageView中的?那个ImageId[position]到底代表了什么?是代表了5个不同的图片么?我真 的不懂了。。

解决方案 »

  1.   

    第一个问题我感觉很奇怪说说第二个问题吧。。
    getView 方法是用来一个一个绘制  getCount是你要绘制多少次
    position 就是当前绘制的第几个ID。。 希望可以帮到楼主!
      

  2.   

    我懂了,但是请问程序为什么出错这是log信息,我都崩溃了。。07-15 07:09:56.289: ERROR/dalvikvm-heap(221): 4608000-byte external allocation too large for this process.
    07-15 07:09:56.289: ERROR/(221): VM won't let us allocate 4608000 bytes
    07-15 07:09:56.289: ERROR/AndroidRuntime(221): Uncaught handler: thread main exiting due to uncaught exception
    07-15 07:09:56.329: ERROR/AndroidRuntime(221): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:447)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:323)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.content.res.Resources.loadDrawable(Resources.java:1705)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.content.res.Resources.getDrawable(Resources.java:580)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.widget.ImageView.resolveUri(ImageView.java:485)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.widget.ImageView.setImageResource(ImageView.java:270)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at com.lan.GalleryActivity$ImageAdapter.getView(GalleryActivity.java:85)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.widget.Gallery.makeAndAddView(Gallery.java:745)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.widget.Gallery.fillToGalleryRight(Gallery.java:697)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.widget.Gallery.layout(Gallery.java:628)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.widget.Gallery.onLayout(Gallery.java:336)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.view.View.layout(View.java:6830)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.view.View.layout(View.java:6830)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.widget.LinearLayout.onLayout(LinearLayout.java:918)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.view.View.layout(View.java:6830)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.view.View.layout(View.java:6830)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.view.ViewRoot.performTraversals(ViewRoot.java:996)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.os.Handler.dispatchMessage(Handler.java:99)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.os.Looper.loop(Looper.java:123)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at android.app.ActivityThread.main(ActivityThread.java:4363)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at java.lang.reflect.Method.invokeNative(Native Method)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at java.lang.reflect.Method.invoke(Method.java:521)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    07-15 07:09:56.329: ERROR/AndroidRuntime(221):     at dalvik.system.NativeStart.main(Native Method)
    07-15 07:09:56.361: ERROR/dalvikvm(221): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
    07-15 07:09:58.759: ERROR/gralloc(51): [unregister] handle 0x55e0b0 still locked (state=40000001)
    我已经把电池,什么蓝牙之类的错误去掉了,还有这些,我看到什么空指针异常,什么 对于这个程序来说太大了。哥们能帮着再解答解答么
      

  3.   

    问题1里面的main.xml是这样写的<?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.lan"
          android:versionCode="1"
          android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".MessageActivity"
                      android:label="@string/app_name">
                          
                <intent-filter>
                    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            
            </activity>
        </application>
        <uses-permission android:name="android.permission.READ_CONTACTS" />
     <receiver android:name=".SMSReceiver"> </receiver>
    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
    <uses-permission android:name="android.permission.READ_SMS"></uses-permission>
    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
    <uses-sdk android:minSdkVersion="7" />
    </manifest> 
    这样不算注册了么?主要不注册那虚拟器根本也收不到消息啊,但是我的虚拟器能收到消息,但就是不响应OnReceiver
      

  4.   

    第一个问题:
    <receiver android:name=".SMSReceiver"> </receiver>
    这句话要写到application节点里才有效
      

  5.   

    221): 4608000-byte external allocation too large for this process.
    07-15 07:09:56.289: ERROR/(221): VM won't let us allocate 4608000 bytes
    出现这个错误是因为图片太大,导致内存溢出
      

  6.   

    <intent-filter>
      <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>这个要放到你的 receiver 节点里面