بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مقدار String دادن به setImageResource (حل شده)
سلام به همه
والله من یه متغیرر استرینگ دارم که یه اسمی توشه که حاوی اسم عکس توی پوشه drawble هست
String img = "myimage";
حالا میخوام که این اسمی که توی این متغییر هست رو بزارم توی تابع setImageResource
img.setImageResource(R.drawable.img);
اما جواب نمیده. خطا میگیره. میگه باید متغییرتون drawble باشه یا یه همچین چیزی
من فقط میخوام بفهمم چطوری میتونم محتوای توی متغییر رو بجای اون آدرس عکسه قالب کنم بهش؟
برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال
SaLaH KuRD
11 سال پیش
+1
0
سلام از تابع زیر استفاده کنید .
اول Context رو توی کلاس G تعریف می کنم :
public class G extends Application {
public static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
}
عکس رو توی پوشه های drawable میذارم و اسم عکس رو به جای salah می نویسم .
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView img = (ImageView) findViewById(R.id.img);
SetDrawable("salah", img);
}
public static void SetDrawable(String value, ImageView image) {
int resID = G.context.getResources().getIdentifier(value, "drawable", G.context.getPackageName());
image.setImageResource(resID);
}
موفق باشید .
پاسخ به سوال
sadra
11 سال پیش
0
0
این ما کلاس G
package com.example.mytests;
import android.app.Application;
import android.content.Context;
public class G extends Application {
public static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
}
اینم مال کلاس main
package com.example.mytests;
import android.support.v7.app.ActionBarActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class Main extends ActionBarActivity {
private int chek;
private String imgadd="sadr2";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn=(Button) findViewById(R.id.my_btn);
final ImageView img=(ImageView) findViewById(R.id.imageView1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
SetDrawable("sadr2", img);
}
});
}
public static void SetDrawable(String value, ImageView image) {
int resID = G.context.getResources().getIdentifier(value, "drawable", G.context.getPackageName());
image.setImageResource(resID);
}
}
جایی رو اشتباه نوشتم؟ کجاش باید تصحیح بشه؟
پاسخ به سوال
sadra
11 سال پیش
0
0
مشکلم حل شد. از تابع زر باید استفاده کنیم. خیلی راحت و بدون دردسر:
// تابع ایجاد کننده آدرس استرینک برای سورس
int id = getResources().getIdentifier(myString, "drawable", getPackageName());
Drawable drawable = getResources().getDrawable(id);
// کد آدرس دهی به ایمیج ویوو
myImageview.setImageDrawable(drawable);
اینم کد main
package com.example.mytests;
import android.support.v7.app.ActionBarActivity;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class Main extends ActionBarActivity {
private int chek;
private String imgadd="sadr2";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn=(Button) findViewById(R.id.my_btn);
final TextView txt=(TextView) findViewById(R.id.my_txt);
final ImageView img=(ImageView) findViewById(R.id.imageView1);
btn.setOnClickListener(new OnClickListener() {
int id = getResources().getIdentifier(imgadd, "drawable", getPackageName());
Drawable drawable = getResources().getDrawable(id);
@Override
public void onClick(View arg0) {
img.setImageDrawable(drawable);
}
});
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .