Я пытаюсь передать переменную String из моей активности в свой созданный класс классов. Я попробовал Bundle, но он, похоже, не работает. Я хочу передать значение ввода EditText, называемого «destination» в моей MainActivity, в мой класс DrawView. То, что я пытаюсь достичь, зависит от ввода пользователя в классе активности, класс DrawView будет рисовать фигуры в другом положении. Любая помощь будет оценена.Передача переменной из действия в пользовательский созданный вид
Это код для моей деятельности класса
MainActivity.class
public class MainActivity extends ActionBarActivity {
static EditText destination = (EditText)findViewById(R.id.roomdinput);
String roomName;
//DrawView drawView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button floorPlan = (Button)findViewById(R.id.floorPlanButton);
floorPlan.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
roomName = destination.getText().toString();
Bundle myb = new Bundle();
myb.putString("key", roomName);
Intent a = new Intent(MainActivity.this, DrawView.class);
a.putExtras(myb);
startActivity(a);
startActivity(new Intent("com.example.helloworld3.FLOORPLAN"));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
И это код для моего DrawView класса
DraView.class
public class DrawView extends View {
Paint paint = new Paint();
float ux, dx, rx,lx;
String roomName2;
Bundle myb2 ;
public DrawView(Context context) {
super(context);
paint.setColor(Color.RED);
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawLine(90, 250 , 90, 400, paint);
canvas.drawLine(20, 0, 0, 20, paint);
canvas.drawCircle(150, 400, 30, paint);
}
}
Вы не можете использовать 'startActivity (...)' в ' start "класс, который расширяет' View'. Вам нужно либо передать данные в конструкторе вашего «DrawView», либо, если вам нужно регулярно его обновлять, создайте метод в классе «DrawView», который может использоваться для передачи данных в него и который затем отменяет/перерисовывает представление. – Squonk