2015-09-18 3 views
0

Я хочу создать новое изображение с помощью сенсорного экрана, но оно показывает ошибки, которые я не знаю причин. Он показываетДобавить новое изображение другим классом сенсорным экраном

The constructor ImageView(LinearLayout) is undefined 

Это основной вид деятельности:

public class MainActivity extends Activity { 

    public LinearLayout screenlayout; 

    public void onCreate(Bundle saveInstanceState){ 
     super.onCreate(saveInstanceState); 
     setContentView(R.layout.activity_main); 

     final LinearLayout screenlayout= (LinearLayout)findViewById(R.id.screenlayout); 

     screenlayout.setOnTouchListener(new OnTouchListener() { 
       public boolean onTouch(View v, MotionEvent event) { 

        switch (event.getAction()) { 
        case MotionEvent.ACTION_DOWN: 
         int x_cord = (int) event.getX(); 
         int y_cord = (int) event.getY(); 

         AddPicture aa = new AddPicture(); 
         aa.addNewer(screenlayout, x_cord, y_cord);      

         break; 
        case MotionEvent.ACTION_MOVE:     
         break; 
        default: 
         break; 
        } 
        return true;   
        } 
      });    
    }    
} 

Это AddPicture Класс:

public class AddPicture extends MainActivity{ 


    public void addNewer(LinearLayout screenlayout,int vtx,int vty) { 

     ImageView i = new ImageView(screenlayout); 

     i.setImageResource(R.drawable.ball); 
     i.setAdjustViewBounds(true); 
     i.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));      
     screenlayout.addView(i);   
     setContentView(screenlayout); 
    } 
} 
+0

доля ошибки LogCat –

+0

Это показывает « конструктор ImageView (LinearLayout) не определен ». –

+0

ImageView i = новый ImageView (screenlayout); почему вы проезжаете здесь? почему бы и нет: ImageView iv = новый ImageView (это); –

ответ

0

Я сделал небольшое изменение в коде:

Это основная деятельность :

public class MainActivity extends Activity { 

public static MainActivity mInstance = null; // new edit 

    public LinearLayout screenlayout; 

    public void onCreate(Bundle saveInstanceState){ 
     super.onCreate(saveInstanceState); 

    mInstance = this; // new edit 

     setContentView(R.layout.activity_main); 

     final LinearLayout screenlayout= (LinearLayout)findViewById(R.id.screenlayout); 

     screenlayout.setOnTouchListener(new OnTouchListener() { 
       public boolean onTouch(View v, MotionEvent event) { 

        switch (event.getAction()) { 
        case MotionEvent.ACTION_DOWN: 
         int x_cord = (int) event.getX(); 
         int y_cord = (int) event.getY(); 

         AddPicture aa = new AddPicture(MainActivity.this); 
         screenlayout.addView(aa.addNewer(x_cord, y_cord)); // edit     
         setContentView(screenlayout); 
         break; 
        case MotionEvent.ACTION_MOVE:     
         break; 
        default: 
         break; 
        } 
        return true;   
        } 
      });    
    }    
    } 

Это AddPicture Класс:

// если простой класс, то не распространяются с активностью

public class AddPicture { 

private Context mContext; 

public AddPicture(Context context) 
{ 
    this.mContext = context; 
} 
    public ImageView addNewer(int vtx,int vty) 
    {  
     ImageView i = new ImageView(mContext); // edit 

     i.setImageResource(R.drawable.ic_launcher); 
     i.setAdjustViewBounds(true); 
     i.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));  

     return i; 
    } 
    } 

Отредактировано: Сво работает в настоящее время

+0

Что такое YourActivityName в «ImageView i = new ImageView (YourActivityName.this)»; –

+0

Я удалил это, передаю контекст или getApplicationContext –

+0

теперь проверяю, что я сделал редактирование, теперь вы можете передать контекст –

Смежные вопросы