آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مقدار String دادن به setImageResource  (حل شده)

sadra  11 سال پیش  11 سال پیش
0 0

سلام به همه

والله من یه متغیرر استرینگ دارم که یه اسمی توشه که حاوی اسم عکس توی پوشه 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);
}

 موفق باشید .

 

0 0
الا من باید واسه این G یه کلاس درست کنم توی src ؟ (11 سال پیش)
0 0
بله باید توی src یه کلاس به اسم G بسازید و کد ها رو توش قرار بدید. (11 سال پیش)
0 0
انجام دادم اما کرش میکنه و برنامه رو میبنده! (11 سال پیش)
پاسخ به سوال 
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);
}

}

جایی رو اشتباه نوشتم؟ کجاش باید تصحیح بشه؟

0 0
یه بار جای "sadra2" همون متغییر imgadd رو گذاشتم همین اررور رو داد. الانم همینه! (11 سال پیش)
0 0
کسی نیست کمک کنه؟ :"( (11 سال پیش)
پاسخ به سوال 
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);

}

});

}

}

0 0
یه سوال. وقتی مشکم حل شده از کجا بزنم که جل شده؟ (11 سال پیش)
0 0
بالای همین صفحه روی عنوان سوالت دابل کلیک کن . بعد عنوان قابل ویرایش میشه آخرش تو پرانتز بنویش (حل شده) (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .