PDA

View Full Version : رفتن از یک "فرگمنت" به یک اکتیویتی



kavous_kiani
جمعه 02 اسفند 1392, 16:07 عصر
دوستان!

این کد برای کلیک روی یک تصویر یا دکمه، و رفتن از یک "صفحه" به "صفحه دیگر" کار می کند :



//تعریف دکمه
ImageView myImageview =new findViewById(R.id.organization);
// اجرای دستور کلیک روی دکمه
myImageview.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// تعریف اینتنت برای رفتن به صفحه مورد نظرمون
Intent myShowIntent = new Intent(this, ShowWeb.class);
// اجرای اینتنت
startActivity(myShowIntent);
}
});


اما این دستور برای کلیک روی یک آیتم، و رفتن از یک "فرگمنت" به یک "اکتیویتی دیگر" عمل نمی کند.

با توجه به اینک مبداء ما یک "فرگمنت" است، در یک برنامه که از اسلایدینگ دراور استفاده کردم، آیا باید تغییری در کد ایجاد کنم.

دو اخطار می دهد:

1. یکی روی : findViewById

اخطار : findViewById cannot be resolved to a type

2. اخطار روی : new Intent(this, ShowWeb.class);

اخطار : The constructor Intent(, Class<ShowWeb>;) is undefined

این سوال خیلی در برنامه من کاربرد دارد، لطفاً راهنمایی کنید.

ممنون

shahin bahari
جمعه 02 اسفند 1392, 16:14 عصر
ImageView myImageview =new findViewById(R.id.organization);
اون new قبل از find برای چه هست؟!؟!؟ باید یه ویو inflate کنید و از توی اون find کنید. v.findViewById

Intent myShowIntent = new Intent(this, ShowWeb.class);
لطفا دقت کنید هرکجا this به چی اشاره داره. تو کد شما به onclickListener اشاره داره و نه context . از متد getActivity() استفاده کنید.

smemamian
جمعه 02 اسفند 1392, 16:21 عصر
ImageView myImageview =(ImageView)view.findViewById(R.id.organization);

myImageview.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

Intent myShowIntent = new Intent(getActivity(), ShowWeb.class);

startActivity(myShowIntent);
}
});

kavous_kiani
جمعه 02 اسفند 1392, 18:31 عصر
با تشکر از شما

کد بالا را قرار دادم. بر روی کلمه view خطا می گیرد.

view cannot be resolved

کجا و چگونه باید تعریف اش کنم؟

این هم کد اکتیویتی :




import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.RelativeLayout;
import android.os.Handler;
import android.content.Intent;
import android.widget.ImageView;

public class HomeFragment<myImageview> extends Fragment {

public HomeFragment(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.fragment_home, container, false);

return rootView;

// ---------------

ImageView myImageview =(ImageView)view.findViewById(R.id.organization);

myImageview.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

Intent myShowIntent = new Intent(getActivity(), ShowWeb.class);

startActivity(myShowIntent);
}
});

// ---------------

//تعریف یک هندلر
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
finish();
//main : نام صفحه ای که میخوایم بعد از یک زمان مشخص واردش بشیم
startActivity(new Intent (getActivity(), WhatsHotFragment.class));
}
}, 7000); // مدت زمان بر حسب میلی ثانیه

// ---------------
}

}



در ضمن : در قسمت هندلر هم روی کلمه finish() خطا می گیرد: The method finish() is undefined for the type
در پیشنهادهای فیکس کردن می گوید که یک متد فینیش ایجاد کنید.
ممنون

smemamian
جمعه 02 اسفند 1392, 20:48 عصر
viewمن همون rootView شماست.

kavous_kiani
جمعه 02 اسفند 1392, 21:56 عصر
این کد را به این صورت اصلاح کردم :


ImageView myImageview =(ImageView) rootView.findViewById(R.id.organization);

myImageview.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

Intent myShowIntent = new Intent(getActivity(), ShowWeb.class);

startActivity(myShowIntent);
}
});

در خط اول خطا می دهد : Unreachable code

لطفاً راهنمائی کنید. ممنون

jafaripur
جمعه 02 اسفند 1392, 22:30 عصر
این رو به این شکل بنویس.

getActivity().this

kavous_kiani
شنبه 03 اسفند 1392, 00:58 صبح
متاسفانه این کد هم مشکل را حل نکرد!!

Hadi.Me
شنبه 03 اسفند 1392, 05:34 صبح
این کد را به این صورت اصلاح کردم :


ImageView myImageview =(ImageView) rootView.findViewById(R.id.organization);

myImageview.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

Intent myShowIntent = new Intent(getActivity(), ShowWeb.class);

startActivity(myShowIntent);
}
});

در خط اول خطا می دهد : Unreachable code
لطفاً راهنمائی کنید. ممنون

عزیزان سطر اول کد ایشون (اونجا که imageview رو تعریف میکنن قسمت بعد از cast) درست هست؟
من این شکلشو قبلا ندیدم، خواستم بدونم درست هست یا خیر

jafaripur
شنبه 03 اسفند 1392, 11:02 صبح
با تشکر از شما

کد بالا را قرار دادم. بر روی کلمه view خطا می گیرد.

view cannot be resolved

کجا و چگونه باید تعریف اش کنم؟

این هم کد اکتیویتی :




import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.RelativeLayout;
import android.os.Handler;
import android.content.Intent;
import android.widget.ImageView;

public class HomeFragment<myImageview> extends Fragment {

public HomeFragment(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.fragment_home, container, false);

return rootView;

// ---------------

ImageView myImageview =(ImageView)view.findViewById(R.id.organization);

myImageview.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

Intent myShowIntent = new Intent(getActivity(), ShowWeb.class);

startActivity(myShowIntent);
}
});

// ---------------

//تعریف یک هندلر
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
finish();
//main : نام صفحه ای که میخوایم بعد از یک زمان مشخص واردش بشیم
startActivity(new Intent (getActivity(), WhatsHotFragment.class));
}
}, 7000); // مدت زمان بر حسب میلی ثانیه

// ---------------
}

}



در ضمن : در قسمت هندلر هم روی کلمه finish() خطا می گیرد: The method finish() is undefined for the type
در پیشنهادهای فیکس کردن می گوید که یک متد فینیش ایجاد کنید.
ممنون

این خط رو ببر آخر سر بنوس:

return rootView;

jafaripur
شنبه 03 اسفند 1392, 11:03 صبح
عزیزان سطر اول کد ایشون (اونجا که imageview رو تعریف میکنن قسمت بعد از cast) درست هست؟
من این شکلشو قبلا ندیدم، خواستم بدونم درست هست یا خیر

آره درست هستش، از یک View دیگه می گیره.

kavous_kiani
یک شنبه 04 اسفند 1392, 00:50 صبح
با تشکر از همه عزیزان
مشکل حل شد.
این هم کد نهایی :



ImageView myImageview =(ImageView) rootView.findViewById(R.id.organization);

myImageview.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

Intent myShowIntent = new Intent (getActivity(), ShowWeb.class);

startActivity(myShowIntent);

}
});
return rootView;