powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Вызов нестачного метода из другого класса
15 сообщений из 15, страница 1 из 1
Вызов нестачного метода из другого класса
    #38966828
Фотография НикоДимиден
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Подскажите, как можно вызвать нестатистический метод из другого класса.
1.Этот другой класс нельзя наследовать тем классом, он уже унаследован от другого.
2.Манипуляции с контекстом не хочу использовать.
3.Через экземпляр класса вылетает ошибка.

Какие есть варианты?

И я заметил, что статистические методы, не очень любят использовать. Почему?
...
Рейтинг: 0 / 0
Вызов нестачного метода из другого класса
    #38966830
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше показать кодом, что хочется.
И задачу описать, которую этот код должен решить.
...
Рейтинг: 0 / 0
Вызов нестачного метода из другого класса
    #38966867
Фотография НикоДимиден
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

Нужно вызвать метод Wind() из метода Met() ?
класс 1
public class MyAd1 extends Activity {

private void Met(){
//работаем
}

}
класс 2
public class MyAd2 extends Activity {

private void Wind(){
//работаем
// тут инструкция связанная с контекстом и нестатическими переменными и другими методами этого класса, которые тоже не статистические
}

}
...
Рейтинг: 0 / 0
Вызов нестачного метода из другого класса
    #38966888
Фотография НикоДимиден
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
класс 1
Код: java
1.
2.
3.
4.
5.
6.
7.
public class MyAd1 extends Activity {

public void Met(){
//работаем
}

}


класс 2
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class MyAd2 extends Activity {

public void Wind(){
//работаем
// тут инструкция связанная с контекстом и нестатическими переменными и другими методами этого класса, которые тоже не статистические
}

}
...
Рейтинг: 0 / 0
Вызов нестачного метода из другого класса
    #38966946
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая ошибка из третьего пункта?
...
Рейтинг: 0 / 0
Вызов нестачного метода из другого класса
    #38966963
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НикоДимиден3.Через экземпляр класса вылетает ошибка.

что за ошибка? и побольше кода увидёт можно!?
...
Рейтинг: 0 / 0
Вызов нестачного метода из другого класса
    #38966980
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у тебя есть две активити ?
ты из одной хочешь вызвать метод у другой. ?

дурацкая идея, нет никакой гарантии что активити будет жить.

а на некоторых девайсах у меня в настройках для разрабов, стоит галочка не сохранять активити.

то ест твой код на воих девайсах работать н ебудет, так же как и после восстановления состояния.
...
Рейтинг: 0 / 0
Вызов нестачного метода из другого класса
    #38967107
Фотография НикоДимиден
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот все данные
MainActivity
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
public class MainActivity extends Activity {

	private Adapter addap;
	private ArrayList<Integer> ImagV;
	private ArrayList<String> str;
	private ListView listView1;
	LayoutInflater lInflater;
	private int e000;
	Context con;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.i("333"," Проверка 10000000");
        
        listView1 = (ListView) findViewById(R.id.listView1);
        ImagV = new ArrayList<Integer>();  
        str = new ArrayList<String>();  
        addap = new Adapter(this,ImagV,str);
        listView1.setAdapter(addap);
        
        con=this;
        
        
        for(int i=0;i<10;i++){
        	Log.i("333"," Проверка 000");
         str.add("777");
         ImagV.add(R.drawable.ic_launcher);	
        }
        
        
    }

    
    
    
    
    
    
    public void Activ1(){
		  	
    	Activ2();
	}
    
    
    
    public void Activ2(){
		
    	//Log.i("333"," Проверка");
    	ImagV.clear();  
        str.clear();
    	addap.notifyDataSetChanged();
    	Context f=con;
    	
    	if(e000!=10){
    		
    	}
    	Acti77771();
    	
	}
    private void Acti77771(){
	  	
    	Log.i("333"," Проверка");
    	for(int i=0;i<10;i++){
        	Log.i("333"," Проверка 000");
         str.add("777");
         ImagV.add(R.drawable.ic_launcher);	
        }
	}



class Adapter
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
public class Adapter extends BaseAdapter {

	private ArrayList<Integer> Bol41 = new ArrayList<Integer>();
	private ArrayList<String> str = new ArrayList<String>();
	private View view2=null;
	private LayoutInflater lInflater;

	private Context ctx;
	
	Adapter(Context context, ArrayList<Integer> Bol4, ArrayList<String> st) {    
		Bol41=Bol4;
		ctx=context;
		str=st;

	  }
	
	
	
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return Bol41.size();
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return Bol41.get(position);
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		Log.i("333"," Проверка 1");
		View view = convertView;
	    view2 = convertView;
	    if (convertView == null) 
	    {	
	    lInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);	
	    view = lInflater.inflate(R.layout.item2, parent, false); 
	    }
		
	    ((LinearLayout) view.findViewById(R.id.LL1)).setBackgroundResource((Integer) Bol41.get(position));	  
	    ((TextView) view.findViewById(R.id.tvDescr)).setText((String) str.get(position));
	    
	    
	    
	    
	    
	    view.findViewById(R.id.imageView1).setOnClickListener(new View.OnClickListener() {
	        @Override
	        public void onClick(View v) {         
	          
	        	Met();
	        }
	    });
	    
	    
	    
	    
	    view2=null; 	    
	    return view;
	}
	
	
	
	
	
	
	
	public void Met(){
		
		MainActivity yr = new MainActivity();	
		yr.Activ2();
		
	}
	
	
	

}



main
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LL1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="false"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/tvDescr"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

</LinearLayout>



item2
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.nametest.MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:text="@string/hello_world" />

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="33dp" >
    </ListView>

</RelativeLayout>



Лог с ошибкой
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
05-23 20:21:56.559: D/AndroidRuntime(2540): Shutting down VM
05-23 20:21:56.567: W/dalvikvm(2540): threadid=1: thread exiting with uncaught exception (group=0xa6176908)
05-23 20:21:56.579: E/AndroidRuntime(2540): FATAL EXCEPTION: main
05-23 20:21:56.579: E/AndroidRuntime(2540): java.lang.NullPointerException
05-23 20:21:56.579: E/AndroidRuntime(2540): 	at com.example.nametest.MainActivity.Activ2(MainActivity.java:67)
05-23 20:21:56.579: E/AndroidRuntime(2540): 	at com.example.nametest.Adapter.Met(Adapter.java:114)
05-23 20:21:56.579: E/AndroidRuntime(2540): 	at com.example.nametest.Adapter$1.onClick(Adapter.java:79)
05-23 20:21:56.579: E/AndroidRuntime(2540): 	at android.view.View.performClick(View.java:4204)
05-23 20:21:56.579: E/AndroidRuntime(2540): 	at android.view.View$PerformClick.run(View.java:17355)
05-23 20:21:56.579: E/AndroidRuntime(2540): 	at android.os.Handler.handleCallback(Handler.java:725)
05-23 20:21:56.579: E/AndroidRuntime(2540): 	at android.os.Handler.dispatchMessage(Handler.java:92)
05-23 20:21:56.579: E/AndroidRuntime(2540): 	at android.os.Looper.loop(Looper.java:137)
05-23 20:21:56.579: E/AndroidRuntime(2540): 	at android.app.ActivityThread.main(ActivityThread.java:5041)
05-23 20:21:56.579: E/AndroidRuntime(2540): 	at java.lang.reflect.Method.invokeNative(Native Method)
05-23 20:21:56.579: E/AndroidRuntime(2540): 	at java.lang.reflect.Method.invoke(Method.java:511)
05-23 20:21:56.579: E/AndroidRuntime(2540): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-23 20:21:56.579: E/AndroidRuntime(2540): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-23 20:21:56.579: E/AndroidRuntime(2540): 	at dalvik.system.NativeStart.main(Native Method)
05-23 20:21:59.223: I/Process(2540): Sending signal. PID: 2540 SIG: 9



Модератор: Просьба пользоваться тэгом spoiler. Он же кнопка "плюс" в быстром редакторе.
...
Рейтинг: 0 / 0
Вызов нестачного метода из другого класса
    #38967146
Фотография НикоДимиден
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой...Сорри сорри... это я на форуме названия перепутал .. Вместо main - item2
...
Рейтинг: 0 / 0
Вызов нестачного метода из другого класса
    #38967388
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
   view.findViewById(R.id.imageView1).setOnClickListener(new View.OnClickListener() {
	        @Override
	        public void onClick(View v) {         
	          
	        	Met();
	        }
	    });
	    





Код: sql
1.
2.
3.
4.
5.
6.
	public void Met(){
		
		MainActivity yr = new MainActivity();	
		yr.Activ2();
		
	}



вообще ерунда, для этого есть интерфейсы.

и во вторых, чем не угодил стандартный onClickListenner ?
...
Рейтинг: 0 / 0
Вызов нестачного метода из другого класса
    #38967390
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и да, передача контекста в адаптер, тоже не всегда хорошая идея, из-за этого могут быть лики.
лучше отдавать инфлатер
...
Рейтинг: 0 / 0
Вызов нестачного метода из другого класса
    #38968532
Фотография НикоДимиден
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джибс,
То есть в том классе с которого нужно вызвать метод, реализовать интерфейс. и передать через него?
...
Рейтинг: 0 / 0
Вызов нестачного метода из другого класса
    #38968613
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НикоДимиденТо есть в том классе с которого нужно вызвать метод, реализовать интерфейс. и передать через него?
Лучше скажи, в чем задача? Контекст я показывал как можно помнить на все приложение 17552348 .
...
Рейтинг: 0 / 0
Вызов нестачного метода из другого класса
    #38968686
Фотография НикоДимиден
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

нужно вызвать метод Met(); из Adapter


если вызывать по такое способу, то будет ошибка, потому что мы создаём новый экземпляр класса, и элементы класса не инициализируются. из-за этого происходит java.lang.NullPointerException. Это моё предположение.
Как правильно вызвать метод в таком случаи?

Неправильный вариант
Код: java
1.
2.
3.
4.
5.
6.
public void Met(){
		
		MainActivity yr = new MainActivity();	
		yr.Activ2();
		
	}



Предполагаемые варианты/варианты:
1.Добавить в конструктор адаптера передачу контекста (РАБОТАЕТ)
2.Джибс пишет что с помощью интерфейсов это можно сделать. Как?

Примечание: main и item2 я перепутал местами когда писал на форуме.
...
Рейтинг: 0 / 0
Вызов нестачного метода из другого класса
    #38968894
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
class Adapter ...
{
  private IOnMySuperClickListenner mOnMySuperClickListenner; 
  
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
   // почитай про холдеры !!!
   ...
   view.setTag(position);
   view.findViewById(R.id.imageView1).setOnClickListener(new View.OnClickListener() {
	        @Override
	        public void onClick(View v) {         
                     if (mOnMySuperClickListenner  != null)
                        mOnMySuperClickListenner.onClick((Integer)v.getTag());
	        }
	    });
  ...
 }

  public void setOnMySuperClickListenner(IOnMySuperClickListenner value)
  {
      mOnMySuperClickListenner = value;
  }

  public interface IOnMySuperClickListenner
 {
     public void onClick(int index);
  }
}




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class MainActivity extends Activity {

	private Adapter addap;

...

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ...
        addap = new Adapter(this,ImagV,str);

        addap.setOnMySuperClickListenner( new IOnMySuperClickListenner{
               public void onClick(int index)
               { 
                     ///      
               } 
         });
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Вызов нестачного метода из другого класса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]