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

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

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

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

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

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

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

}
...
Рейтинг: 0 / 0
23.05.2015, 00:47
    #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
23.05.2015, 09:31
    #38966946
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов нестачного метода из другого класса
Какая ошибка из третьего пункта?
...
Рейтинг: 0 / 0
23.05.2015, 10:28
    #38966963
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов нестачного метода из другого класса
НикоДимиден3.Через экземпляр класса вылетает ошибка.

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

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

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

то ест твой код на воих девайсах работать н ебудет, так же как и после восстановления состояния.
...
Рейтинг: 0 / 0
23.05.2015, 20:56
    #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
24.05.2015, 00:46
    #38967146
НикоДимиден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов нестачного метода из другого класса
Ой...Сорри сорри... это я на форуме названия перепутал .. Вместо main - item2
...
Рейтинг: 0 / 0
24.05.2015, 20:50
    #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
24.05.2015, 20:51
    #38967390
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов нестачного метода из другого класса
и да, передача контекста в адаптер, тоже не всегда хорошая идея, из-за этого могут быть лики.
лучше отдавать инфлатер
...
Рейтинг: 0 / 0
26.05.2015, 12:09
    #38968532
НикоДимиден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов нестачного метода из другого класса
Джибс,
То есть в том классе с которого нужно вызвать метод, реализовать интерфейс. и передать через него?
...
Рейтинг: 0 / 0
26.05.2015, 13:02
    #38968613
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов нестачного метода из другого класса
НикоДимиденТо есть в том классе с которого нужно вызвать метод, реализовать интерфейс. и передать через него?
Лучше скажи, в чем задача? Контекст я показывал как можно помнить на все приложение 17552348 .
...
Рейтинг: 0 / 0
26.05.2015, 14:10
    #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
26.05.2015, 15:57
    #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
Форумы / Android [игнор отключен] [закрыт для гостей] / Вызов нестачного метода из другого класса / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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