диалогтан ата-аналық әрекеттің мәтіндік көрінісінің мәнін алыңыз

Мен валюталық қосымшаны құруға тырысамын. Менде басты әрекеттегі батырма бар және батырманы басқанда, ол валюта конвертеріне ұқсас диалогтық терезені ашады. Менің негізгі міндетімнен ашылған тілқатысу терезесіндегі негізгі қызметтің мәтіндік көрінісінің мәнін ала алмаймын.

Менің диалогты негізгі қызметтен осылай ашып отырмын

 Button calc = (Button) findViewById(R.id.btn_converter);
    calc.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            Intent myIntent = new Intent(MainActivity.this, Calculator.class);
            MainActivity.this.startActivity(myIntent);
        }
    });

мәтінді қараудың мәнін диалогтан оқуға тырысамын

Textview t1 = (TextView) findViewById(R.id.txt_cad_alis)

бірақ «t1» әрдайым нөлге тең. Мен не істеп жатырмын?

0
кодтың бірінші бөлімі негізгі әрекеттен, кодтың екінші бөлігі (TextView t1 .....) калькуляторлық белсенділікте
қосылды автор Arif YILMAZ, көзі
Деректерді бір әрекеттен екіншісіне кіруге тырысасыз ба? сіз диалогты айттыңыз, бірақ кодтан жаңа әрекетті бастайтыныңызды көрсетеді
қосылды автор Swapnil, көзі
TextView-ді алуға тырысатын толық кодты көрсетіңіз. Бұл код Caclulator Activity ішіндегі ме?
қосылды автор Plato, көзі
төмендегі жауапты екінші әрекетке қалай деректерді жіберу туралы оқыңыз
қосылды автор Plato, көзі
егер бұл әрекетті орындасаңыз, t1 мәні: 'Textview t1 = (TextView) MainActivity.this.findViewById (R.id.txt_cad_alis)'
қосылды автор Alex248, көзі

8 жауаптар

TextView - onCreate() ішіндегі TextView кодын инициализациялау әдісінен кейін,

public class MyActivity extends Activity
{
    TextView t1;

    public void onCreate(...)
    {
        ...
        t1 = (TextView) findViewById(R.id.txt_cad_alis);
        ...
    }

then use something like String text = ti.getText().toString() to get the text inside your Dialog

2
қосылды

Басқа әрекетке қатысы бар Көру қызметіне кіре алмайсыз. Мұның орнына сіз өзіңіздің әрекетіңізді бастамас бұрын мәнді оқып, оны қосымша әрекеттер арқылы екінші әрекетке жібересіз:

Intent myIntent = new Intent(MainActivity.this, Calculator.class);
myIntent.putExtra("value", t1.getText().toString());
MainActivity.this.startActivity(myIntent);

Calculator класында, мәнді алу оңай:

protected void onCreate(Bundle savedInstanceState) {
    ...
    String textViewValue = getIntent().getStringExtra("value");
}
1
қосылды

Басқа әрекетке қатысы бар Көру қызметіне кіре алмайсыз. Мұның орнына сіз өзіңіздің әрекетіңізді бастамас бұрын мәнді оқып, оны қосымша әрекеттер арқылы екінші әрекетке жібересіз:

Intent myIntent = new Intent(MainActivity.this, Calculator.class);
myIntent.putExtra("value", t1.getText().toString());
MainActivity.this.startActivity(myIntent);

Calculator класында, мәнді алу оңай:

protected void onCreate(Bundle savedInstanceState) {
    ...
    String textViewValue = getIntent().getStringExtra("value");
}
1
қосылды

Сіз бірінші әрекетіндегі Textview t1-ке қол жеткізуге тырысып жатырсыз, сіздің екінші әрекеттен. Міне, сондықтан әрдайым нөлге тең.

Түймешік басылған кезде оны TextView-ден мәніңізді алуыңыз керек және оны hte ниетіне қойыңыз.

Button calc = (Button) findViewById(R.id.btn_converter);
calc.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {
        Textview t1 = (TextView) findViewById(R.id.txt_cad_alis);
        String value = t1.getText().toString();
        Intent myIntent = new Intent(MainActivity.this, Calculator.class);
        intent.putExtra("aKey", value);
        MainActivity.this.startActivity(myIntent);
    }
});

Содан кейін екінші әрекетіңіздің onCreate() әдісінде келесідей мәнді шығаруға болады:

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    Intent i = getIntent();
        if (i.hasExtra("aKey")){
             String value = i.getStringExtra("aKey");   
        }
  }
1
қосылды
көп рақмет. барлық жауаптар пайдалы болды, бірақ жауапты таңдадым. Мен барлық маңызды жауаптарды көтердім.
қосылды автор Arif YILMAZ, көзі

Т1 TextView үшін сынып төлсипатын жариялау және оның MainActivity's onCreate() бағдарламасында сілтемесін алу. Содан кейін, КалькуляторАктивтілігін іске қоспас бұрын, t1 мәнін алыңыз және оны Ниет арқылы жіберіңіз. Бұл жағдайда «myIntent» арқылы. Бұл көмектеседі деп үміттенемін.

1
қосылды

Мұнда еске түсіретін маңызды нәрсе - инкапсуляция - сіз, ең бастысы, MainActivity-ге тиесілі диалогқа тікелей қатынауға тиіссіз. Бұл тек жақсы тәжірибе мен инкапсуляция принципін бұзып қана қоймай, сонымен қатар диалогыңызды басқа контекстте қайта пайдалануды қаласаңыз, сізде жолдың бас ауырсынуына себеп болады.

Идея, кез келген жеке көзқарас (сіздің диалогыңыз сияқты) кез келген жағдайда қолайлы болуы керек, егер дұрыс ақпарат берілсе және ата-аналар тобында кейбір өрістердің болуына сүйенбеу керек.

Сізге не істеу керек - OnClick мәтін өрісінің мәнін алу және оны диалогқа ниетпен беру.

1
қосылды

Мұнда еске түсіретін маңызды нәрсе - инкапсуляция - сіз, ең бастысы, MainActivity-ге тиесілі диалогқа тікелей қатынауға тиіссіз. Бұл тек жақсы тәжірибе мен инкапсуляция принципін бұзып қана қоймай, сонымен қатар диалогыңызды басқа контекстте қайта пайдалануды қаласаңыз, сізде жолдың бас ауырсынуына себеп болады.

Идея, кез келген жеке көзқарас (сіздің диалогыңыз сияқты) кез келген жағдайда қолайлы болуы керек, егер дұрыс ақпарат берілсе және ата-аналар тобында кейбір өрістердің болуына сүйенбеу керек.

Сізге не істеу керек - OnClick мәтін өрісінің мәнін алу және оны диалогқа ниетпен беру.

1
қосылды

Екі ықтимал себебі:

  1. You are not calling setContentView() in your onCreate(), or you are passing the wrong layout id to setContentView().
  2. txt_cad_alis is not the right id of the textview.
0
қосылды